MySQL远程无法连接的常见原因

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

前言

MySQL是目前非常流行的数据库之一也是中小企业持久化存储的首选数据库。

不同于我们日常学习在实际应用中MySQL服务都会挂载在某台服务器上。如果MySQL部署在某台云服务器上这样一来操纵数据库每次都需要先连接服务器再进入数据库操作不是很方便。

于是学习远程连接 MySQL 的方法是数据库在服务器上时的必修课。下面我将讲述远程连接报错的常见三种原因。


原因1

MySQL的远程访问权限未开放

如果最常见的无法远程连接问题因为没开启远程访问权限导致的。

解决方案

进入MySQL中通过下述命令可以查看远程访问权限等创建用户的远程访问权限并刷新指令即可别忘记每次修改命令都要刷新指令哦。

常见命令如下

# 查看当前远程连接的权限
select User,authentication_string,Host from user;
# 创建用户远程访问权限
create user root@'%' identified by '123456';
# 允许指定主机(IP地址)访问权限
grant all privileges on test.* to '用户名'@'ip地址' identified by '密码';
# 无法创建请删除重新试一遍
drop user root@'ip地址';
# 赋予用户操作的全部权限
grant all privileges on *.* to root@'%';
# 刷新指令
flush privileges;

原因2

服务器开启了防火墙导致MySQL的访问端口无法使用

如果服务器开启了防火墙并且未设置MySQL端口开放策略那么你将无法通过对应的端口远程访问MySQL。

解决方案

关闭防火墙或者开放对应的MySQL端口即可比如默认的MySQL端口是3306开放他就行。

常见命令如下

# 查看防火墙状态
firewall-cmd --state
# 启动防火墙
systemctl start firewalld.service
# 关闭防火墙
systemctl stop firewalld.service
# 设置开机自启动
systemctl enable firewalld.service
# 开放防火墙端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重新加载配置
firewall-cmd --reload
# 查看开放的防火墙端口
firewall-cmd --zone=public --list-ports

原因3

docker链被清除导致MySQL无法访问

如果你的MySQL是部署在docker容器中的并且在部署完成后开启设置了防火墙。这个时候就可能导致docker的链被清除即使你开启了远程访问权限也只能通过进入容器访问MySQL远程无法访问。

解决方案

重新启动docker可以恢复docker链。

# 重启docker
systemctl restart docker
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql