一、确认my.cnf文件中的bind-address是否被注释
#bind-address=127.0.0.1
在my.cnf配置文件中,bind-address表示MySQL只接受来自本机的连接,并拒绝所有外部连接。因此,首先需要检查该选项是否被注释掉。如果被注释掉,则说明MySQL默认允许外部连接。
如果该选项未注释掉,则需要注释掉或者把127.0.0.1改为0.0.0.0,表示MySQL接受来自所有IP地址的连接。例如:
bind-address=0.0.0.0
二、确保MySQL的用户表中有root用户的远程访问权限
在MySQL的用户表中,每个用户都有主机和权限两种属性。如果想允许root用户从外部连接MySQL,则需要确保其主机属性为“%”(即所有主机),并且有至少一种权限。
1. 添加root用户
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
这一步是确保用户表中存在root用户,如果已经存在,则可以跳过这一步。
2. 授权给root用户远程访问MySQL
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
这一步是确保root用户在所有主机上都能够访问MySQL。ALL PRIVILEGES表示赋予该用户所有权限, '*'表示所有数据库和表。如果只想授权某个数据库和表,则需要将'*.*'改为具体的数据库和表。
三、打开防火墙端口
如果MySQL所在的服务器有防火墙,则需要打开3306端口(MySQL默认端口)以允许外部连接。例如:
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
四、重启MySQL服务
最后一步是重启MySQL服务以使更改生效。
systemctl restart mysqld
总结
通过以上步骤,我们可以把MySQL设置为允许外部连接,并且通过授权不同的用户不同的权限,保证MySQL的安全性。