开发者

MySQL开启远程访问权限的完整步骤记录

目录
  • 1. 登录mysql服务器
  • 2. 创建允许远程访问的用户(或修改现有用户)
    • 方案1:创建新用户并授权
    • 方案2:修改root用户允许远程访问(不推荐,存在安全风险)python
  • 3. 修改MySQL配置文件
    • 4. 重启MySQL服务
      • 5. 开放防火墙端口(默认3306)
        • 6. 验证远程连接
          • 常见问题排查
            • 1. 错误:ERROR 2003 (HY000): Can't connect to MySQL server
            • 2. 错误:ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed
            • 3. 错误:ERROR 1045 (28000): Access denied
          • 安全建议
            • 总结

              要在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';
              
              -- 授予权限(建议按需授权,此处示例授予所有数据库的完全权限)
              GRAN编程客栈T ALL PRIVILEGES ON *.* TO 'username'@'remote_ip' WITH GRANT OPTION;
              
              -- 刷新权限
              FLUSH PRIVILEGES;

              方案2:修改root用户允许远程访问(不推荐,存在安全风险javascript)

              -- 更新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

                • WindowsC:\ProgramData\MySQL\MySQL Server X.X\my.ini

              • 修改配置

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

              总结

              到此这篇关于MySQL开启远程访问权限的文章就介绍到这了,更多相关MySQL开启远程访问权限内容请搜索编程客栈编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

              0

              上一篇:

              下一篇:

              精彩评论

              暂无评论...
              验证码 换一张
              取 消

              最新数据库

              数据库排行榜