MySQL如何开启远程访问权限

要在MySQL中开启远程[访问权限],需完成以下步骤:

1. 登录MySQL服务器

bash 复制代码
mysql -u root -p
# 输入root密码进入MySQL命令行
AI写代码

2. 创建允许远程访问的用户(或修改现有用户)

方案1:创建新用户并授权
sql 复制代码
-- 创建用户('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;
AI写代码
方案2:修改root用户允许远程访问(不推荐,存在安全风险)
sql 复制代码
-- 更新root用户的host为'%'(允许任意IP)
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
 
-- 刷新权限
FLUSH PRIVILEGES;
AI写代码

3. 修改MySQL配置文件

  • 找到配置文件

    • Linux : /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf
    • Windows : C:\ProgramData\MySQL\MySQL Server X.X\my.ini
  • 修改配置

ini 复制代码
[mysqld]
bind-address = 0.0.0.0  # 允许所有IP连接(默认值为127.0.0.1,仅限本地)
AI写代码

4. 重启MySQL服务

  • Linux:

    bash 复制代码
    sudo systemctl restart mysql   # Ubuntu/Debian
    sudo systemctl restart mysqld  # CentOS/RHEL
    AI写代码
  • Windows:

    • 通过服务管理器重启 "MySQLXX" 服务。

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

  • Linux (ufw) :

    bash 复制代码
    sudo ufw allow 3306/tcp
    sudo ufw reload
    AI写代码
  • Linux (firewalld) :

    css 复制代码
    sudo firewall-cmd --permanent --add-port=3306/tcp
    sudo firewall-cmd --reload
    AI写代码
  • Windows:

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

6. 验证远程连接

bash 复制代码
# 从另一台机器测试连接(替换IP、用户名、密码)
mysql -h <mysql_server_ip> -u username -p
AI写代码

常见问题排查

1. 错误:ERROR 2003 (HY000): Can't connect to MySQL server
  • 原因:防火墙未放行端口或MySQL未监听外网。

  • 解决

    perl 复制代码
    # 检查端口监听状态
    netstat -tuln | grep 3306
    # 应显示:0.0.0.0:3306 或 :::3306
    AI写代码
2. 错误:ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed
  • 原因:用户权限未正确配置。

  • 解决

    sql 复制代码
    -- 检查用户权限
    SELECT Host, User FROM mysql.user;
    -- 确保目标IP或'%'存在授权记录
    AI写代码
3. 错误:ERROR 1045 (28000): Access denied
  • 原因:密码错误或用户无权限。
  • 解决:确认用户名、密码及授权IP是否匹配。

安全建议

  1. 最小权限原则 :按需授予权限(如SELECT, INSERT而非ALL PRIVILEGES)。

  2. 限制访问IP :避免使用'%',指定具体IP或网段。

  3. 启用SSL加密(可选):

    sql 复制代码
    ALTER USER 'username'@'remote_ip' REQUIRE SSL;
    AI写代码

通过以上步骤,即可安全地开启MySQL远程访问权限。

相关推荐
越来越无动于衷5 分钟前
基于 JWT 的登录验证功能实现详解
java·数据库·spring boot·mysql·mybatis
看天走路吃雪糕7 分钟前
墨者:SQL手工注入漏洞测试(MySQL数据库-字符型)
数据库·mysql·sql注入·sqlmap·墨者学院·字符型注入
paopaokaka_luck3 小时前
基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
前端·javascript·vue.js·spring boot·后端·小程序·uni-app
Villiam_AY3 小时前
Redis 缓存机制详解:原理、问题与最佳实践
开发语言·redis·后端
魔尔助理顾问6 小时前
系统整理Python的循环语句和常用方法
开发语言·后端·python
程序视点7 小时前
Java BigDecimal详解:小数精确计算、使用方法与常见问题解决方案
java·后端
每天敲200行代码7 小时前
MySQL 事务管理
数据库·mysql·事务
你的人类朋友7 小时前
❤️‍🔥微服务的拆分策略
后端·微服务·架构
不修×蝙蝠8 小时前
MySQL 全详解:从入门到精通的实战指南
数据库·mysql·索引·最左前缀
AI小智8 小时前
后端变全栈,终于可以给大家推出我的LangChain学习小站了!
后端