* 본 내용은 우분투(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가지 경우 다 문제 없었다)