张裕 发表于 2025-5-30 00:19:10

MySQL怎样开启远程访问权限

要在MySQL中开启远程访问权限,需完成以下步调:
1. 登录MySQL服务器

mysql -u root -p
# 输入root密码进入MySQL命令行 2. 创建答应远程访问的用户(或修改现有效户)

方案1:创建新用户并授权

-- 创建用户('username'替换为用户名,'password'替换为密码,'remote_ip'替换为远程客户端IP或'%'允许所有IP)
CREATE USER 'username'@'remote_ip' IDENTIFIED BY 'password';

-- 授予权限(建议按需授权,此处示例授予所有数据库的完全权限)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'remote_ip' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES; 方案2:修改root用户答应远程访问(不推荐,存在安全风险)

-- 更新root用户的host为'%'(允许任意IP)
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';

-- 刷新权限
FLUSH PRIVILEGES; 3. 修改MySQL设置文件



[*] 找到设置文件:

[*] Linux: /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf
[*] Windows: C:\ProgramData\MySQL\MySQL Server X.X\my.ini

[*] 修改设置:

bind-address = 0.0.0.0# 允许所有IP连接(默认值为127.0.0.1,仅限本地) 4. 重启MySQL服务



[*] Linux:
sudo systemctl restart mysql   # Ubuntu/Debian
sudo systemctl restart mysqld# CentOS/RHEL
[*] Windows:

[*] 通过服务管理器重启 "MySQLXX" 服务。

5. 开放防火墙端口(默认3306)



[*] Linux (ufw):
sudo ufw allow 3306/tcp
sudo ufw reload
[*] Linux (firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
[*] Windows:

[*] 控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则(端口3306)。

6. 验证远程连接

# 从另一台机器测试连接(替换IP、用户名、密码)
mysql -h <mysql_server_ip> -u username -p 常见问题排查

1. 错误:ERROR 2003 (HY000): Can't connect to MySQL server



[*] 原因:防火墙未放行端口或MySQL未监听外网。
[*] 办理:
# 检查端口监听状态
netstat -tuln | grep 3306
# 应显示:0.0.0.0:3306 或 :::3306
2. 错误:ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed



[*] 原因:用户权限未精确设置。
[*] 办理:
-- 检查用户权限
SELECT Host, User FROM mysql.user;
-- 确保目标IP或'%'存在授权记录
3. 错误:ERROR 1045 (28000): Access denied



[*] 原因:密码错误或用户无权限。
[*] 办理:确认用户名、密码及授权IP是否匹配。
安全发起


[*] 最小权限原则:按需授予权限(如SELECT, INSERT而非ALL PRIVILEGES)。
[*] 限制访问IP:避免使用'%',指定具体IP或网段。
[*] 启用SSL加密(可选):
ALTER USER 'username'@'remote_ip' REQUIRE SSL;
通过以上步调,即可安全地开启MySQL远程访问权限。
页: [1]
查看完整版本: MySQL怎样开启远程访问权限