docker-運維-mysql服務器容器

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!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章