Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > 设置MySQL允许远程连接

如何设置MySQL允许远程连接?详细步骤教你创建用户并授权

作者:计算机辅助工程

还在为MySQL无法远程连接而烦恼吗?本文将手把手教你如何在服务器上创建专用用户并授权,同时检查防火墙开放3306端口,确保从任何客户端都能安全访问你的数据库

要解决这个问题,你需要在MySQL服务器上执行一系列操作,主要是登录MySQL,创建一个专门用于远程访问的用户(或修改root用户的访问权限),然后授权。

请按照以下步骤在服务器上操作。为安全起见,通常建议创建一个新用户,而不是直接允许root用户远程登录。

解决方案

创建远程访问用户并授权

整个流程可以分为三步,下表概括了核心步骤和命令:

步骤操作位置核心命令/操作说明
1. 本地登录MySQLMySQL服务器终端mysql -u root -p使用root账户在服务器本机登录。
2. 创建用户并授权MySQL命令行内CREATE USER 和 GRANT关键步骤:创建一个新用户,并授予其从特定IP或所有IP访问的权限。
3. 检查防火墙服务器操作系统firewall-cmd 或 iptables确保服务器防火墙开放了MySQL端口(默认3306)。

第一步:在MySQL服务器本地登录

你需要使用之前设置的root密码,在服务器的命令行中登录MySQL:

mysql -u root -p

输入密码后,你将进入MySQL的命令行界面(提示符变为 mysql>)。

第二步:创建用户并授权(两种方案,任选其一)

推荐方案A:创建专用远程用户(更安全)

-- 1. 创建一个新用户,并允许从你的客户端IP(192.168.0.204)连接
-- ‘your_strong_password' 替换成你想设置的强密码
CREATE USER 'remote_user'@'192.168.0.204' IDENTIFIED BY 'your_strong_password';

-- 2. 授予这个新用户对所有数据库的全部权限(可根据需要缩小权限范围,例如只授权特定数据库)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'192.168.0.204' WITH GRANT OPTION;

-- 3. 刷新权限,使授权立即生效
FLUSH PRIVILEGES;

备选方案B:允许root用户远程登录(不推荐用于生产环境)

-- 1. 修改root用户的host为‘%',允许从任何IP连接(风险较高)
UPDATE mysql.user SET host='%' WHERE user='root';

-- 2. 同样需要刷新权限
FLUSH PRIVILEGES;

完成上述SQL后,输入 EXIT; 退出MySQL命令行。

第三步:检查服务器防火墙(至关重要!)

即使MySQL配置正确,如果服务器的防火墙没有开放3306端口,远程连接依然会被阻止。

在MySQL服务器上执行以下命令检查防火墙:

# 1. 查看防火墙状态(CentOS 7/8 通常使用firewalld)
systemctl status firewalld

# 2. 如果防火墙正在运行,永久开放3306端口并重新加载配置
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# 3. 确认端口已开放
firewall-cmd --list-ports | grep 3306

如果你的服务器使用的是iptables或其他防火墙,需要查阅相应文档开放端口。

重要提示与测试连接

连接命令:完成上述步骤后,你可以从客户端机器(192.168.0.204)使用以下命令测试连接:

mysql -h <你的MySQL服务器IP> -u remote_user -p

安全警告:

按照以上步骤操作后,你应该可以成功远程连接了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文