错误详情信息:
ERROR 1251
client does not support authentication protocol requested by server;consider upgrading Mysql client
问题原因:
主要是由于mysql8以前的加密规则与mysql8以后的存在差异。
解决办法:
##修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
##更新一下用户的密码 password 为自己重新设置的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
##刷新权限
FLUSH PRIVILEGES;
过程再现:
docker拉取mysql :
[root@localhost ~]# docker pull mysql
docker启动mysql :
[root@localhost ~]# docker run --name mysql01 -d mysql:latest
查看启动失败原因:
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
42f09819908b mysql "docker-entrypoint.sh" 34 seconds ago Exited (1) 33 seconds ago mysql01
[root@localhost ~]# docker logs 42f09819908b
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;#启动失败;这个三个参数必须指定一个
docker上启动mysql容器成功,但不能通过客户端连接:
[root@localhost ~]# docker run --name mysql01 -d -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
docker启动mysql容器并通过客户端连接:
[root@localhost ~]# docker run --name mysql01 -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:latest
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d8ae10bb2bd mysql:latest "docker-entrypoint.s…" 49 minutes ago Up 49 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql01
解决处理:
[root@localhost ~]# docker exec -it 2d8ae10bb2bd /bin/bash
root@2d8ae10bb2bd:/# mysql -uroot -p123456
WARNING: IPv4 forwarding is disabled. Networking will not work.
5b0a218d82026735da14b5124b192869d063d94ca97d3bf5acae8a93fd849527
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b0a218d8202 mysql:latest "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql01
cd05b8b56196 redis "docker-entrypoint.s…" 5 hours ago Up 5 hours 0.0.0.0:6379->6379/tcp myredis03
[root@localhost ~]# docker exec -it mysql01 /bin/bash
root@5b0a218d8202:/# mysql -uroot -p123456
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.21 MySQL Community Server - GPL
Copyright (c) 2000, 2020, 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.
mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| % | root | caching_sha2_password | $A$005$jb[ 3qv*
hzgCD#ttriLUvsvEFt.8j30tpUTxSyLaGnmLY5pasnP0EfNx5 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | caching_sha2_password | $A$005$JTMNdR5:=Z}r#8;gbHiBZncjQWfHBpUlqBXJAuKPmmwtBnMTO/htWWJN8. |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| % | root | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)
mysql>