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

 更新时间:2025年06月27日 10:45:16   作者:bingoo~  
MySQL是常用的关系型数据库,默认仅支持本地访问,若需更灵活管理,可通过远程连接突破限制,实现跨主机操作,这篇文章主要介绍了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

    • 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开启远程访问权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中的LOCATE和POSITION函数使用方法

    MySQL中的LOCATE和POSITION函数使用方法

    不常用:MySQL中的LOCATE和POSITION函数
    2010-02-02
  • MySQL的锁机制及排查锁问题解析

    MySQL的锁机制及排查锁问题解析

    MySQL的锁机制包括行锁和表锁,行锁进一步细分为RecordLock、GapLock和Next-keyLock,行锁因其细粒度而减少冲突但开销大,可能引起死锁,本文介绍MySQL的锁机制及排查锁问题,感兴趣的朋友一起看看吧
    2025-01-01
  • MYSQL删除视图时视图被lock的解决方案

    MYSQL删除视图时视图被lock的解决方案

    在MySQL 8.0中执行DROP VIEW时遇到"Waiting for table metadata lock"错误,因为视图或其依赖的表被其他会话持有元数据锁,解决方法包括查找阻塞的会话,终止会话,并采取预防措施以避免未来出现类似问题,需要的朋友可以参考下
    2026-01-01
  • MySQL中联表查询优化的实战指南

    MySQL中联表查询优化的实战指南

    这篇文章主要介绍了MySQL在处理多表关联查询性能问题时的索引优化策略,重点介绍了小表驱动的联合索引设计原则,以及覆盖索引和定期分析的重要性,通过实际案例展示了优化前后性能的显著提升
    2026-06-06
  • MySQL使用SHOW PROCESSLIST的实现

    MySQL使用SHOW PROCESSLIST的实现

    本文主要介绍了MySQL使用SHOW PROCESSLIST的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • 如何查本地mysql的username和密码及更新密码几种方式

    如何查本地mysql的username和密码及更新密码几种方式

    这篇文章主要介绍了光宇如何查找本地MySQL数据库的用户名和密码,包括查看当前用户、列出所有用户、重置密码以及检查配置文件,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • mysql联合索引的实现示例

    mysql联合索引的实现示例

    联合索引也叫组合索引或多列索引,是指在MySQL中对一个表的多个列共同建立的索引,与单列索引不同,联合索引是同时对多个列的值进行排序和存储的索引结构,下面就来介绍一下如何使用
    2025-12-12
  • MySQL中触发器的基础学习教程

    MySQL中触发器的基础学习教程

    这篇文章主要介绍了MySQL中触发器的基础学习教程,包括对触发器的创建和管理等基本知识,着力推荐!需要的朋友可以参考下
    2015-12-12
  • MySQL分组排序取每组第一条数据的实现

    MySQL分组排序取每组第一条数据的实现

    最近有个需求MySQL根据某一个字段分组,然后组内排序,最后每组取排序后的第一条数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • MySQL使用GROUP BY分组查询

    MySQL使用GROUP BY分组查询

    GROUP BY关键字可以根据一个或多个字段对查询结果进行分组,本文主要介绍了MySQL使用GROUP BY分组查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08

最新评论