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

前言

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

你可能感兴趣的:(mysql,mysql,docker)