docker-運維-mysql服務器容器
創建mysql目錄
[root@bluesky docker-file]# pwd
/root/docker-file
[root@bluesky docker-file]# mkdir -p mysql/conf # mysql配置文件,放置my.cnf
[root@bluesky docker-file]# mkdir -p mysql/data # mysql表數據文件
[root@bluesky docker-file]# cd dc-mysql/
[root@bluesky dc-mysql]# pwd
/root/docker-file/dc-mysql
[root@bluesky dc-mysql]# ls
docker-compose.yml mysql
編寫docker-compose.yml文件
[root@bluesky docker-file]# touch docker-compose.yml
docker-compose.yml
內容:
version: '3'
services:
mysql:
image: mysql
volumes:
- $PWD/mysql/data:/var/lib/mysql
- $PWD/mysql/conf/my.cnf:/etc/my.cnf
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: "111111" # root用戶密碼
MYSQL_USER: 'test'
MYSQL_PASS: '123456'
在當前目錄下的 mysql/conf
目錄下新建 my.cnf
文件:
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
編譯並啓動容器
[root@bluesky docker-file]# docker-compose build
[root@bluesky docker-file]# docker-compose up -d
...
連接docker-mysql
在cmd
運行
C:\Users\Administrator>mysql -h 192.168.101.58 -P 3306 -uroot -p
Enter password: ******
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password'
cannot be loaded: ÕÒ²»µ½Ö¸¶¨µÄÄ£¿é¡£
mysql8.0對密碼加密,革命尚未成功…
解決方案
連接到容器:
docker exec mysql_container_id /bin/bash
使用 root 用戶登陸:
root@3a02dca3a138:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.19 MySQL Community Server - GPL
執行 sql 語句:
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.01 sec)
再次嘗試在 cmd
連接 mysql
C:\Users\Administrator>mysql -h 192.168.101.58 -P 3306 -uroot -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.19 MySQL Community Server - GPL
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
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.
還有一種方法解決初始登陸密碼加密的,在docker-compose.yml中加入:
command: --default-authentication-plugin=mysql_native_password
works!!