안녕하세요 상훈입니다. 

Spring + Maven, MySQL 을 사용하는데 DBeaver 를 통해서는 MySQL 과 연동이 되는데, 스프링에서는 서버 구동조차 안되어 난감했던 경험을 하였습니다.

최근에 NCP-Computed Engine 에서 AWS - EC2로 서버이전을 하게되었는데, 이 과정 중 발생하였습니다.

보통 인바운드, 아웃바운드 설정 오류인 것이다. 라는 내용이 대부분이라 인바운드, 아웃바운드 모두 모든 트래픽 허용 (0.0.0.0/0) 으로 했는데도 안되고 (::/0)... 너무 난감했습니다.

 


 ✔ Which Error?

✔ Communications link failure

바로 연결 오류.

해당 오류가 뜨면서 서버 구동조차 안되었기 때문에, 무엇이 오류였던건지 2일정도 찾아 헤매었습니다.

구글 서핑 중 우연히 발견하게 된 블로그의 한 단락

이게 빛이자 나의 누였다.

이번 서버 설정에서는 MySQL 의 기본 설정인 bind-address 를 설정하지 않았다는 것이 상기되었다.

 


✔ MySQL 기본 설정하기 [Solution]

mysql 의 기본 설정 중 bind-address 를 찾아 주석처리
  - 로컬에서만 된다는 것으로 설정된 기본 형태를 주석 처리하여 모두 사용이 가능하도록 변경

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address 설정

초보적인 실수였지만 겨우 잘 찾았으니 다행.
(그냥 ec2 어떻게 서버 올리는지 순서에 따라 작성을 한 번 해야하나? 라는 필요성을 느낌)

 

반응형

안녕하세요 상훈입니다.

AWS - MySQL - DBeaver
ec2 Ubuntu 에 올려진 MySQLDBeaver로 접속하는 도중 에러가 발생하였습니다.

Public Key Retrieval is not allowed

 

서버측 문제인줄 알고 계속 서버쪽을 뒤지고 방화벽 건드려보고 해도 안됐었다. 결국, 서버측 문제가 아니었다.

 

😎 해결방법

Dirver properties - allowPublicKeyRetrieval

Driver properties - allowPublicKeyRetrieval 를 true 로 변경하고 test connection 을 시도해보도록 하자.

MySQL 8.0 버전이후부터 ssh 연결 시, publicKey를 사용할 경우 위의 옵션을 켜주어야한다고 한다.

그것도 모르고,,, ㅠ

 

Connection success!!!

 

도움이 되셨다면, 여유롭게 커피 한 잔 사주시면 감사합니다~

 

출처 : https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/DBeaver_logo.svg/1200px-DBeaver_logo.svg.png

 

반응형

 

Mysql - sql 문법으로 검색기능을 구현하기 위해서 거의 필수적으로 사용되는 쿼리문 중 하나.

비동기 통신으로 Javascript(Axios) - PHP - Mysql 로 데이터를 받아와 내용을 출력하는 방법을 사용하였다.
(해당 내용은 다른 포스팅으로 남기기로 한다.)

 

MySQL에서 인자를 받아와 SELECT ~ 하는 방법

 

SELECT * FROM 테이블명 WHERE 컬럼명 LIKE ' %매개변수명% ' ;	// 매개변수 글자 자체를 포함하는 모든 결과

SELECT * FROM 테이블명 WHERE 컬럼명 LIKE ' %매개변수명 ' ;	// 매개변수를 끝으로 하는 모든 결과

SELECT * FROM 테이블명 WHERE 컬럼명 LIKE ' %매개변수명 ' ;	// 매개변수를 시작으로 하는 모든 결과

 

모든 내용은 조건절 (WHERE) 뒤에 LIKE % 를 어떻게 위치시키느냐에 따라 달라집니다.

 

 

 

 

반응형

 

 

Web Application에서 게시판이나 상품리스트와 같이 정렬이 존재하고,
페이지를 넘겨야하는 경우가 있는데, 이 때 pagination을 사용한다.


라이브러리(ex. Pagination.js) 도 존재하지만 직접 코딩할 때 필요한 limit offset, count를 포스팅하겠다.

 

Pagination.js | Home

 

pagination.js.org

 

Mysql 에서 limit를 사용할때 보통은 1개의 인자만 입력하여 최대 n개 를 가져오게 한다.

select * from tableName ~ limit 10;

 

그런데 pagination을 적용할 때에는 limit n 으로 전부 처리할 수가 없다.
페이지가 분할되어 출력되어야 하기 때문이다. 

그래서 limt n, k ; 를 사용하는데,

select * from tableName ~ limit 행의 수(offset),  출력할 컬럼 수;

//예시 
select * from tableName ~ limit 3, 4
// 0,1,2,3번째 행부터 4개 출력

 

column_no id
3 id_three
4 id_four
5 id_five
6 id_six

 

이렇게 사용한다.

offset 기본적으로는 0으로 처리되며,

설정하지 않을 경우 그냥 자동으로 0 처리가 된다. 

즉, 평소에 offset을 제공하지 않고 limit을 사용한 경우, offset이 0이 자동생략되었다는 것이다.

 

반응형

 

 

JavaScript 비통기 통신(Ajax, Axios 등)으로 PHP에서 송신한 json 데이터를 수신하여 콘솔에 찍어보는 작업을 하도록 하겠습니다.

1. 비동기 통신
2. PHP 송신
3. Javascript 수신 및 출력

■ 1. 비동기 통신

비동기 통신에는 여러 종류가 있지만 이 중에서 axios를 사용

Axios CDN 을 사용하였다. (편하게)

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
 
<script>
getData() // 함수 호출

function getData () { 
  axios.get("api주소")	
    .then(function(response) {
      console.log(response)
    })
    .catch(function(error) {
      console.log(error)
    })
}
</script>

get method로 api 주소를 호출한 모습이다.

성공시 "200" 성공과 함께 response가 출력된다. (지금 바로 하면 404에러가 뜰겁니다.)

200 성공 모습 (php 파일이 있어야함)

 

■ 2. PHP 데이터 송신

그 다음으로 PHP에서 데이터를 출력하여 echo 해주면 된다.

<?php
// mysql connection 생략

$result = mysqli_query($con, $sql) or die('query error');

while($row = mysqli_fetch_assoc($result)){
    $data_array[] = ($row);
}

$result = json_encode($data_array);
echo $result;

- 짧은 설명 -

php와 database(DB) mysql 에서 데이터를 출력한 문구
(특별한 프레임워크를 사용하고 있지 않다.)

while문을 통해 출력한 데이터를 $data_array[] 배열에 반복문을 통하여 삽입,
json 형태 { key: value }  로 바꿔주어 출력.

[ mysql 를 조금 참고하자면, column명 : data 인 셈이다. ]
[ key : value ]

- 짧은 설명 끝 - 

 

■ 3. Javascript 수신 및 출력

아까 위에서 axios.get( ) 안의 내용입니다. then()의 코드

<script>
.then(function(response) {
      console.log(response)
      response = JSON.stringify(response.data)
      labelsAndDatas(response)
    })

결과값에 에러가 없다면,
해당 response를 JSON.stringify(response.data) 를 통해 문자열로 변환 중요★
labelsAndDatas( ) 함수로 데이터를 전송

 

<script>

function labelsAndDatas (result) {
  console.log(result)
}
</script>

labelsAndDatas 함수에서 response.data result 로 받아와 콘솔창에 찍어준 모습

이제 이 함수 내에서 원하는 작업을 하면 된다. 

 

labelsAndDatas() 에서 콘솔창에 출력한 모습

key: value로  보았을 때,  { '날짜' : '값', '총량' : '값'  } 을 확인할 수 있다.

 

 

반응형

 

MySQL 에서 데이터를 입력하는 CRUD에서 Create를 담당하는 부분

 

■ 기본 문구

INSERT INTO 'TABLE_NAME' VALUES ( ) ;
OR
INSERT INTO 'TABLE_NAME' ( column names ) VALUES ( datas ) ;

 

■ 예제)

INSERT INTO member_list VALUES (user_name='홍길동', age='25' ) ;

INSERT INTO member_list ( user_name, age ) VALUES ( '홍길동', '25' ) ;

반응형

안녕하세요 상훈입니다.

Mysql에서 계정을 생성하고, 데이터베이스를 생성하여 권한을 할당하는 방법을 포스팅하겠습니다.

(오랜만에 사용하게되면 잊기 쉬움)

시작하기 전에 mysql를 동작시키는 것을 잊지 마세요.

 

1. 계정 생성하는 방법

$ create user '사용자명' identified by '비밀번호' ;

 - 이렇게 생성한다면 계정은 '사용자명'@'%' 의 계정으로 생성됩니다.

예시)

예시

 

   - 확인 하는 방법 ( mysql 데이터베이스에 접속하여 유저 계정을 확인 )

  $ use mysql
  $ select host, user, password from user ;

  계정 확인

 

 

2. 데이터베이스 생성하는 방법

$ create database '데이터베이스명' ;

예시)

예시

 

3. 해당 데이터베이스에 계정의 권한 할당하는 방법

$ grant  all  privileges  on  데이터베이스명.*  to  '계정명'@'%' ;

예시)

예시

 

 

이상입니다.

 

 

 

반응형

+ Recent posts