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 방식이 변경되서 나는 에러라고 한다.
그래서 다시 검색!!!! 그러던 중 아래와 같은 글을 발견했다.
먼저 /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 를 준비하려고 하다 보니 이런 삽질을 했다...ㅠㅠ
'Development > Docker&Kubernetes' 카테고리의 다른 글
[K8S] Kubernetes Object Management 에 대해서 살펴보자. (0) | 2018.11.14 |
---|---|
[K8S] Kubernetes 기초 개념 정리 (0) | 2018.10.30 |
Docker 사용시 sudo 없이 사용하기 (0) | 2018.09.10 |
[K8S] Kubernetes RBAC Authorization & Binding (0) | 2018.08.29 |
[K8S] Kubernetes 설치 ( in Ubuntu in AWS) (0) | 2018.08.26 |