目录
前言
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