连接虚拟机MySQL失败
ping ip地址如果有响应,则网络连接没有问题注:linux系统ip地址可由ip addr或ipconfig命令查看。
·
一、检查网络连接
ping ip地址
如果有响应,则网络连接没有问题
注:linux系统ip地址可由ip addr或ipconfig命令查看
二、检查MySQL服务运行状态
sudo service mysql status
出现如下active(running)为正常运行
如果未运行可采用如下命令运行mysql
sudo service mysql start # 运行msyql服务
三、检查MySQL配置文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
确保配置正确:bind-address=0.0.0.0
保证MySQL服务可以接受来自任何IP地址的连接
四、检查防火墙配置
如果虚拟机配置防火墙,需要确保MySQL3306端口已经被放行
firewall-cmd --zone=public --list-ports # 查看开放的端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent # 开放指定端口
或存在/etc/iptables/rules.v4文件,采用如下命令放行3306端口
sudo vi /etc/iptables/rules.v4
添加如下规则:
-A INPUT -p tcp --dport 3306 -j ACCEPT
重新加载防火墙规则
sudo service iptables restart
五、检查MySQL用户权限
确保登录用户具有远程访问权限
select user, host FROM mysql.user
确保使用的用户具有%的主机权限,表示允许来自任何主机的连接。如果没有该权限,可以使用如下命令添加权限
grant all privileges on *.* to '<用户名>'@'%' identified by '<密码>' with grant option;
如果使用MySQL8.0,上述命令会报错,因为8.0不支持使用 grant 时隐式地创建用户,必须先创建用户再授权,使用如下命令
CREATE USER '<用户名>'@'%' IDENTIFIED BY '密码'; # 创建用户
GRANT ALL PRIVILEGES ON *.* TO "<用户名>"@"%"; # 授予权限
FLUSH PRIVILEGES; # 刷新权限
六、测试连接
检查是否可以登录成功
mysql -h <ip地址> -u <用户名> -p
更多推荐
已为社区贡献2条内容
所有评论(0)