Programing

리눅스(우분투) MariaDB 설치, 원격접속

handam 2014. 12. 1. 18:10

* 본 내용은 우분투(ubuntu) 14.04 64bit 버전을 바탕으로 합니다.


AWS EC2 server 에 올만에 접속해서 DB 에 접속하려고 하는데...


보자보자... 


$ mysql -uroot -p 

The program 'mysql' can be found in the following packages:

 * mysql-client-core-5.5

 * mariadb-client-core-5.5

 * mysql-client-core-5.6

 * percona-xtradb-cluster-client-5.5

Try: sudo apt-get install <selected package>


응? 왜 없지? 했는데, 얼마 전에 다시 밀어버리고 연습삼아 지나온 과정을 반복했던 것을 잊어버리고 있었다. 


그래서 설치하고 접속 테스트 하고, 최종으로 외부에서 접속하는 과정을 포스팅 한다.




- MariaDB 설치 및 로컬접속 테스트


먼저, 마리아 관련 패키지들이 무엇이 있는거 검색을 했다.


$ apt-cache search maria

libmng-dev - M-N-G library (Development headers)

libmng2 - Multiple-image Network Graphics library

libmariadbclient-dev - MariaDB database development files

libmariadbclient18 - MariaDB database client library

libmariadbd-dev - MariaDB embedded database development files

libreoffice-mysql-connector - MariaDB/MySQL Connector extension for LibreOffice

libwtdbomysql-dev - MySQL/MariaDB backend for Wt::Dbo [development]

libwtdbomysql35 - MySQL/MariaDB backend for Wt::Dbo [runtime]

maria - reachability analyzer for Algebraic System Nets

maria-doc - documentation of Maria

mariadb-client - MariaDB database client (metapackage depending on the latest version)

mariadb-client-5.5 - MariaDB database client binaries

mariadb-client-core-5.5 - MariaDB database core client binaries

mariadb-common - MariaDB common metapackage

mariadb-server - MariaDB database server (metapackage depending on the latest version)

mariadb-server-5.5 - MariaDB database server binaries

mariadb-server-core-5.5 - MariaDB database core server files

mariadb-test - MariaDB database regression test suite (metapackage for the latest version)

mariadb-test-5.5 - MariaDB database regression test suite


위 리스트 중 마리아디비 서버 최신버전으로 설치.

$ sudo apt-get install mariadb-server


설치할거냐 물어보고 주르륵... 주르륵.. 설치 되면서 

root 계정의 패스워드를 입력하는 화면이 한 번, 

패스워드 확인 입력이 한 번, 확인 후 설치가 완료 된다.


그리고 mysql 접속과 같은 방법으로 접속을 한다.

$ mysql -uroot -p 

Enter password: 


* 리눅스에서 sql 접속 시 패스워드를 보이게끔 유저명과 같이 이어서 입력하는 방법은 보안상 좋지 않은 방법이라고 한다.

(ex : $ mysql -uroot -p[패스워드])




- 원격접속


* 참조사이트 

http://lab4109.blogspot.kr/2013/10/aws-ec2-ip.html 

http://devxpert.egloos.com/viewer/1017656 


이제 외부에서 접속할 수 있도록 새로운 mysql 계정을 생성하고 권한을 준다. 

(root 계정에 외부 접속 권한을 다 주기 보다는 보안상 새로운 계정을 생성하고 특정 database 에만 권한을 주기로 했다)


먼저, 새로운 DB 생성

MariaDB [(none)]> create database testDB;


그리고 새로운 사용자 생성

MariaDB [(none)]> create user 'test'@'%' identified by 'password'; ---외부(원격)에서 사용하기 위해서는 '%' 로 생성을 해야 한다고 함

MariaDB [(none)]> create user 'test'@'localhost' identified by 'password'; ---로컬용


이어서 권한부여와 확정(?)

MariaDB [(none)]> grant all privileges on [testDB].* to test@'%';

MariaDB [(none)]> flush privileges;



처음 설정 후 접속하려고 하니 Can't connect to MySQL ... 10061 오류가 출력됐다.


뭔고 하니 추가적으로 EC2 서버에 SQL 에서 사용하는 포트 개방(port : 3306)이 필요했고

(Security Groups - Inbound 설정, 지난 글 참고 바람)


또한 MySQL 기본설정이 로컬로 설정 되어 있는데 변경이 필요했다. 

sudo nano /etc/mysql/my.cnf 

...

#bind_address=127.0.0.1 ---주석처리 또는 0.0.0.0

...


mysql 서비스 재시작

sudo service mysql restart

sudo /etc/init.d/mysql restart


* 상위 둘 재시작 명령어 중 아무거나 해도 무방함


이제 외부에서 MySQL Client TOOL 로 접속을 시도하면 접속이 뙇!!!!



* 추가


0.0.0.0 으로 설정을 하라고 하는 글을 먼저 봤는데 정확하지 않지만 cnf 파일 설정 후 바로 외부 접속을 시도 했지만 되지 않았다. 


아마 변경 후 MySQL 서비스 재시작을 했음에도 EC2 서버의 인바운트 포트 설정이 적용 되는데 시간 차가 조금 있는 듯 하다.


거의 몇 십분을 10061 에러 때문에 구글링을 하고 또 했는데 갑자기 my.cnf 파일에 주석으로 설정했더니 접속이 되었다.


이것 때문은 아니라고 생각하는데... 

(추 후, 시간을 두고 address 주석 처리와 0.0.0.0 으로 설정하고 비교를 했는데 2가지 경우 다 문제 없었다)




반응형