连接虚拟机MySQL失败

一、检查网络连接

ping ip地址

如果有响应,则网络连接没有问题
注:linux系统ip地址可由ip addr或ipconfig命令查看

二、检查MySQL服务运行状态

sudo service mysql status

出现如下active(running)为正常运行连接虚拟机MySQL失败_第1张图片
如果未运行可采用如下命令运行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

你可能感兴趣的:(Linux操作,数据库,mysql,数据库)