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远程访问权限。

相关推荐
magic3341656316 分钟前
Springboot整合MinIO文件服务(windows版本)
windows·spring boot·后端·minio·文件对象存储
开心-开心急了26 分钟前
Flask入门教程——李辉 第一、二章关键知识梳理(更新一次)
后端·python·flask
掘金码甲哥37 分钟前
调试grpc的哼哈二将,你值得拥有
后端
小学鸡!1 小时前
Spring Boot实现日志链路追踪
java·spring boot·后端
yumgpkpm1 小时前
华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
大数据·数据库·mysql·华为·oracle·kafka·cloudera
程序员云帆哥2 小时前
MySQL JDBC Driver URL参数配置规范
数据库·mysql·jdbc
用户21411832636022 小时前
OpenSpec 实战:用规范驱动开发破解 AI 编程协作难题
后端
Olrookie3 小时前
若依前后端分离版学习笔记(二十)——实现滑块验证码(vue3)
java·前端·笔记·后端·学习·vue·ruoyi
LucianaiB3 小时前
招聘可以AI面试,那么我制作了一个AI面试教练不过分吧
后端
无奈何杨4 小时前
CoolGuard更新,ip2region升级、名单增加过期时间
后端