MySQL 无法远程连接的解决办法

678 阅读1分钟

情况 1——云服务器控制台防火墙未开启

在腾讯云实例防火墙或者阿里云的实例安全组开放 MySQL 的端口,默认是 3306

image-20221014230455913

情况 2——未设置远程用户

没有设置远程用户的情况下需要设置远程用户,将用户的 Host 设置为%即为允许所有来源的连接

先试用 ssh(你可以选择其他的任何方式) 连接到服务器,进入 mysql

 $ mysql -u root -p
 # 输入你的密码

通过宝塔安装的可以点击这里查看/修改 root 密码

image-20221014225517038

 mysql>use mysql # 切换到 mysql 数据库
 mysql>select User,Host from user;
 +------+---------------+
 | User | Host          |
 +------+---------------+
 | root | 127.0.0.1     |
 | root | ::1           |
 |      | localhost     |
 | root | localhost     |
 |      | vm-0-2-centos |
 | root | vm-0-2-centos |
 +------+---------------+
 7 rows in set (0.00 sec)

可以看到没有远程权限,只有本地的连接权限。

然后执行下面的 SQL 语句(123456 替换成你自己的密码)

 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
 mysql>flush privileges;   //刷新权限

然后再查看一下用户,已经多了 root 的远程用户。

 mysql>select User,Host from user;
 +------+---------------+
 | User | Host          |
 +------+---------------+
 | root | %             |
 | root | 127.0.0.1     |
 | root | ::1           |
 |      | localhost     |
 | root | localhost     |
 |      | vm-0-2-centos |
 | root | vm-0-2-centos |
 +------+---------------+
 7 rows in set (0.00 sec)

情况 3——系统防火墙未开启

如果前两种情况都已经处理了,那么此时需要检查一下系统防火墙的端口是否开启,最简单的办法就是通过宝塔安装系统防火墙插件(也可以通过命令行查看,根据自己的系统自行 google)

image-20221014231532179

如果防火墙的状态是【运行中】那么就需要在端口规则中添加开放端口

image-20221014231805985

如果是【已停止】那么就跟系统防火墙无关了

image-20221014231723201