본문 바로가기
Development/Docker&Kubernetes

Docker 로 mysql 설치 및 접속 하기

by 폴피드 2018. 9. 18.
728x90
반응형

Docker 로 mysql 를 올려봤다. 


실행시키는 방법은 아주 간단하다.


docker run --name mysql-db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<password> -d mysql


이렇게 하면 mysql container 가 구동된다.


docker container ps 


CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES

e99420ff2ee4        mysql               "docker-entrypoint.s…"   26 minutes ago      Up 6 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   mysql-db


여기까지는 쉬웠다. 

그런데 내 로컬 컴퓨터에서 저 DB 에 접속을 하려고 하니.. .접속이 안됐다. 참고로 저 위치는 AWS 에 있는 EC2 에 ubuntu를 올려서 설치한 것이다.


먼저 AWS 보안 그룹을 추가했다.


그래도 안된다.


그 다음에 mysql 설정을 찾아봤다.


docker exec -it mysql-db bash


이렇게 하면 container 안으로 들어올 수 있다.  container에 들어와서 mysql -u root -p 를 이용해서 mysql 로 접속한다.


mysql> select host from mysql.user where user='root';

+-----------+

| host      |

+-----------+

| %         |

| localhost |

+-----------+

2 rows in set (0.00 sec)


저렇게 쿼리를 했을 때 %가 포함되어있으면 root 계정에 한해서 모든 접속을 허용한다고 한다.... 그런데 안되네?????


계속 해서 에러가 난다.


Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found


이 에러는 mysql 의 password 방식이 변경되서 나는 에러라고 한다. 

그래서 다시 검색!!!! 그러던 중 아래와 같은 글을 발견했다.


https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded


먼저 /etc/mysql/my.cnf 파일에 아래와 같은 설정을 추가한다. 


[mysqld]

default_authentication_plugin=mysql_native_password


그래도 안된다...


ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password BY 'password';


나같은 경우는


ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>';


이렇게 실행을 했더니 드디어 접속이 됐다. 

하아... 정말 길고 긴 여정이었다. 

docker로 mysql 은 설치 했는데 접속을 할줄 몰라서 고생하고, 어떻게 접속을 해야 하는지 몰라서 찾아보고...

접속을 했는데 편집기가 설치가 안되어 있어서 vim 도 다시 설치하고...

정말 알아야 할게 너무 많구나.

그런데.. 내가 원래 하려던 것은 이게 아니었는데 DB 를 준비하려고 하다 보니 이런 삽질을 했다...ㅠㅠ


728x90
반응형