远程连接MySQL失败 HeidiSQL连接MySQL失败

远程连接MySQL失败

一、原因:今天在Linux服务器上安装了MySQL数据库,安装完成启动后,想从自己的电脑使用HeidiSQL连接到Linux上MySQL,但是一直是连接失败
二、开启远程访问功能,登录到mysql后,执行下面的命令
mysql> flush privileges;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql> flush privileges;
1. 其中的root是需要远程登录的用户名,可以更改为实际的用户名
2. 其中的%是IP地址,可以替换为具体的IP地址,要是不指定IP地址,则使用%
3. 要是提示ERROR 1410 (42000): You are not allowed to create a user with GRANT ,则说明这个用户还不存在或者这个用户对应的IP地址不存在mysql的表中,使用下面的命令查询用户:
use mysql;
select host, user, authentication_string, plugin from user;

查询结果如图:
远程连接MySQL失败 HeidiSQL连接MySQL失败_第1张图片

发现root的host是localhost,不是%,可以加个host是%的root账号:使用下面的命令生成新的用户:
CREATE USER 'root'@'%' IDENTIFIED BY 'KC$abc123';
然后再执行下面的命令就可以的了
mysql> flush privileges;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql> flush privileges;
三、配置3306端口
1. 在/etc/sysconfig中打开iptables文件
2. 找到下面的一行字,复制,添加到下一行,并把22更改为3306
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

添加后:
远程连接MySQL失败 HeidiSQL连接MySQL失败_第2张图片

四、使用下面的两个命令的其中一个重启防火墙
service iptables restart
systemctl restart iptables.service
然后重新使用HeidiSQL连接mysql,连接成功
五、如果还是连接失败,则需要更改加密方法

执行下面的命令,在结果中可以看到加密方法为:caching_sha2_password,需要更改为mysql_native_password

use mysql;
select host, user, authentication_string, plugin from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

更改后连接就可以的了。

六、总结:这次的远程连接MySQL失败就到这里结束了,如果有疑问可以直接留言评论,如果觉得对你有帮助,可以小小的赞赏一杯奶茶钱,谢谢!!

在这里插入图片描述

你可能感兴趣的:(MySQL,Linux,DB,mysql,数据库,linux)