已解决1251 - Client does not support authentication protocol requested by server; consider upgrading
Posted CoolTiger_程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已解决1251 - Client does not support authentication protocol requested by server; consider upgrading相关的知识,希望对你有一定的参考价值。
远程连接docker容器中的mysql8.0数据库时出现连接不上
报错信息
1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
👀1. 场景:
远程连接docker容器中的mysql8.0数据库时出现连接不上,mysql8.0版本之前没有该问题.
👀2. 原因分析:
出现1251的主要原因是由于mysql版本的问题,mysql8.0
版本,与mysql8.0
以下版本的加密方式不同,导致错误产生。
- MySql 8.0.11 换了新的身份验证插件(
caching_sha2_password
), - 而原来的身份验证插件为(
mysql_native_password
)。
而客户端工具Navicat Premium12
中找不到新的身份验证插件(caching_sha2_password
),因此报上面的错,所以我们将mysql用户使用的 登录密码加密规则还原成 mysql_native_password
,即可登陆成功。
🚀3. 解决:
3.1 方法一
修改root加密方式
1) 查看root或其他用户信息的加密方式
[root@centos7 ~]# mysql -u root -p #登陆mysql
mysql> use mysql; # 切换mysql数据库
mysql> select user,plugin from user where user='root'; #查看root的加密方式
2) 改变加密方式
alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql> select user,plugin from user where user='root';
通过上面两步,即可解决问题
3.2 方法二
添加用户,同时设置登陆加密方式为
mysql_native_password
,并且给它远程访问权限,完成后这个用户也可以访问.
添加远程登录用户
CREATE USER 'mjh'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'mjh'@'%';
docker部署mysql远程连接 解决1251 client does not support ..
现象:用虚拟机上Docker启动mysql之后无法在本地安装的navicat上远程连接已启动的mysql,错误截图:
原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制;客户端不支持新的加密方式。
解决方案:
修改用户(root)的加密方式
步骤:
1、进入mysql容器内部
[[email protected] ~]# docker exec -it mysql01 bash
进入之后输入如下命令:
[email protected]:/# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \\g. Your MySQL connection id is 12 Server version: 8.0.16 MySQL Community Server - GPL Copyright (c) 2000, 2019, 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容器:输入对应命令
mysql> select host,user,plugin,authentication_string from mysql.user; +-----------+------------------+-----------------------+------------------------------------------------------------------------+ | host | user | plugin | authentication_string | +-----------+------------------+-----------------------+------------------------------------------------------------------------+ | % | root | caching_sha2_password | $A$005$Z%@aaqP.mjjK<t?SjMyCAGpzJJtUmnYFmTgPoqWOESUfAg9ojwPkd8HzP4 | | 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$Gr/wA/ PHFFzz``OkyuNlZo3K6eObfcdOORjQoG3zvTztdSnkIDOgg5ZkmzRb/ | +-----------+------------------+-----------------------+------------------------------------------------------------------------+ 5 rows in set (0.00 sec)
host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码
输入如下命令:
mysql>ALTER USER ‘root‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘123456‘;
mysql>flush privileges;
再次查询:
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 | caching_sha2_password | $A$005$Gr/wA/ PHFFzz``OkyuNlZo3K6eObfcdOORjQoG3zvTztdSnkIDOgg5ZkmzRb/ | +-----------+------------------+-----------------------+------------------------------------------------------------------------+ 5 rows in set (0.00 sec)
已经修改完成,点击连接:
以上是关于已解决1251 - Client does not support authentication protocol requested by server; consider upgrading的主要内容,如果未能解决你的问题,请参考以下文章
mysql服务设置远程连接 解决1251 client does not support ..问题
mysql服务设置远程连接 解决1251 client does not support ..问题
Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法
Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法
007-解决Navicat报错1251-Client does not support authentication protocol requested by server;consider upg
连接mysql8.0版本出现1251--Client does not support authentication protocol requested by server的解决