本地电脑navicat连接远程服务器mysql报错2058 caching_sha2等

本地Navicat无法连接远程服务器的MySQL,问题出在版本不匹配。通过升级Navicat到与远程MySQL服务器相匹配的版本(如8.0),并修改服务器的my.cnf配置文件,设置server-id和binlog_format,以及使用ALTERUSER命令更新root用户的密码验证方式,可以成功解决2058错误。

本地navicat连接远程服务器2058:

之前很久遇到的问题就是,本地连接远程服务器mysql报错2058,一直没管,现在终于解决了,记录下:
就是因为电脑的navicat的mysql版本有点低,所以连接不到远程服务器的mysql
mysql5.0版本是mysql_native_password,8.0版本是caching_sha2
[root@VM-16-4-centos ~]# docker run -d \

-p 3306:3306
-v /along/mysql/master/conf:/etc/mysql/conf.d
-v /along/mysql/master/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
–name mysql-master
mysql


然后启动起来之后,执行
vim /along/mysql/master/conf/my.cnf
进行修改加入:
[mysqld]
server-id=1
binlog_format=STATEMENT
然后重启mysql
docker restart mysql-master
然后进入mysql容器内部
docker exec -it mysql-master env LANG=C.UTF-8 /bin/bash
执行ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
修改密码的校验方式,然后你就会发现就能连接上了

### 解决Navicat连接MySQL时出现2059错误的方案 Navicat连接MySQL数据库时出现错误代码2059,通常与身份验证插件`caching_sha2_password`有关。以下是解决此问题的详细方法: #### 1. 检查当前的身份验证插件配置 在MySQL中运行以下SQL命令以检查用户的认证插件设置: ```sql SELECT user, host, plugin FROM mysql.user; ``` 如果发现`root`用户或其他相关用户的`plugin`字段为`caching_sha2_password`,这可能是导致Navicat无法正常连接的原因[^1]。 #### 2. 修改用户的身份验证插件 为了兼容Navicat等旧版客户端工具,可以将用户的认证插件更改为`mysql_native_password`。执行以下SQL语句修改`root`用户的认证方式: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES; ``` - 替换`'你的密码'`为实际使用的密码。 - 如果`root`用户的`host`字段是`localhost`,则需要将`'root'@'%'`替换为`'root'@'localhost'`[^2]。 #### 3. 验证更改是否生效 重新运行以下SQL命令以确认`root`用户的认证插件已更改为`mysql_native_password`: ```sql SELECT user, host, plugin FROM mysql.user; ``` 确保输出结果中的`plugin`字段显示为`mysql_native_password`。 #### 4. 测试Navicat连接 完成上述更改后,尝试使用Navicat重新连接MySQL数据库。如果问题仍未解决,请确保Navicat版本支持`caching_sha2_password`插件或更新Navicat到最新版本。 #### 5. 其他注意事项 - 如果无法更改用户的身份验证插件,也可以考虑升级Navicat到支持`caching_sha2_password`的版本。 - 确保MySQL服务端和客户端的版本兼容性良好。 ```python # 示例:Python脚本测试连接 import pymysql try: connection = pymysql.connect( host='localhost', user='root', password='你的密码', database='test_db' ) print("连接成功") except Exception as e: print(f"连接失败: {e}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值