본문 바로가기
DevOps

Docker - mysql8 설치 및 DBTool(Dbeaver) 접속 ( 오류 access denied for user 및 casching_sha2_password 해결 )

by 맑은안개 2021. 8. 15.

Docker에 mysql 8.x 설치과정을 소개한다. 영속적인 데이터를 유지하기 위해서 volume을 사용한다.

 

실행환경

 - os: windows 10

 

docker volume create 명령으로 volume을 생성할 수 있다.

docker volume create mysql
docker volume create mysql_config

 

생성된 volume은 docker volume ls로 확인할 수 있다.

docker volume ls

 

위에서 생성한 volume, mysql은 mysql의 물리 data파일이 존재하는 /var/lib/mysql에 매핑한다.

mysql_config은 mysql의 config file이 위치한 /etc/mysql에 매핑한다.

docker run --rm -d -v mysql:/var/lib/mysql -v mysql_confg:/etc/mysql -p 13306:3306 --network mysqlnet --name mysqldb -e MYSQL_ROOT_PASSWORD=1234 mysql

( 기존 3306포트에 충돌이 있어 사용하지 않는 13306으로 host를 매핑하였다. )

 

실행 후 docker ps 로 프로세스 확인

D:\docker-mysql>docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                    NAMES
b364d7f3e6ef   mysql     "docker-entrypoint.s…"   7 seconds ago   Up 2 seconds   33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp   mysqldb

 

콘솔 접속

docker exec -ti mysqldb mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.26 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

 

발생할 수 있는 각종 오류들...

Unable to load authentication plugin 'caching_sha2_password' 발생 시 ( DBeaver 접속 시  )

위와 같이 MySQL5가 있고 MySQL이 있는데 MySQL로 접속한다. 

여기서 중요한것은 드라이버이다. "Edit Driver Settings"에서 mysql-connector 버전을 확인한다.

 

access denied for user ''@'' (using password:YES) 발생 시

접속하려는 user의 수신 아이피를 연다. ( localhost가 아닌 %로 모두 오픈 )

mysql> create user 'dodo'@'%' identified by '1234';
Query OK, 0 rows affected (0.02 sec)

mysql> grant all privileges on *.* to 'dodo'@'%';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

pulibc key retrieval is not allowed 발생 시

해당 문제는 8.x이상 버전에서 발생하는 것으로 확인된다. DBeaver에서는 "Driver properties"에서 allowPublicKeyRetrieval=true로 설정해준다.

반응형