MySQL数据库无法远程连接的问题详细解决过程

 更新时间:2025年05月13日 09:11:17   作者:吻等离子  
这篇文章主要介绍了MySQL数据库无法远程连接问题的详细解决过程,解决MySQL无法远程连接的问题需要检查并修改MySQL的用户权限,确保配置文件允许远程访问,并且防火墙开放3306端口,需要的朋友可以参考下

前言

在使用 MySQL 数据库时,遇到这样的问题:

本地可以连接 MySQL,但远程机器连接时,总是报错 Host ... is not allowed to connect to this MySQL server

这通常是因为 MySQL 的用户权限或配置限制了远程访问。

1. 登录 MySQL 数据库

首先,使用本地命令行登录 MySQL:

mysql -u root -p

输入 root 用户的密码进入数据库。

2. 切换到 mysql 系统库

MySQL 的用户权限存放在 mysql 数据库中,我们需要切换到它:

USE mysql;

3. 查看当前用户和主机权限

执行以下命令查看当前 MySQL 用户的 host 设置:

SELECT User, Host FROM mysql.user;

你会看到一张表,例如:

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+

注意到 root 用户的 Host 是 localhost,这表示它 只能从本机连接,无法被远程机器连接。

4. 修改 root 用户的 Host 为 %

要允许 root 用户从任意主机连接,需要把它的 Host 改成 %(表示任意主机):

UPDATE mysql.user SET host='%' WHERE user='root' AND host='localhost';

5. 刷新权限生效

修改完权限后,需要刷新权限表才能生效:

FLUSH PRIVILEGES;

执行以下命令查看当前 MySQL 用户的 host 设置:

SELECT User, Host FROM mysql.user;

你会看到一张表,root的host被设置为了%,表示可以接受远程连接

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | %         |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+

不出意外的话,现在你已经可以进行远程连接了,如果还有问题可以进行6-7的排查

6. 检查 MySQL 配置文件

有时候,MySQL 的配置文件 my.cnf(或 my.ini)会限制绑定的地址,默认只监听 127.0.0.1

  • 打开配置文件:

    vim /etc/my.cnf
    
  • 找到 [mysqld] 部分,修改:

    bind-address = 0.0.0.0
    

    这表示监听所有 IP,而不仅是本机。

  • 保存后,重启 MySQL:

    systemctl restart mysqld
    

7. 确认防火墙是否开放 3306 端口

MySQL 默认端口是 3306,linux为例确保服务器防火墙允许远程访问:

# 查看防火墙状态
firewall-cmd --list-all

# 开放 3306 端口(仅 firewalld 示例)
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

8. 总结

要解决 MySQL 无法远程连接的问题,可以按照下面的步骤排查:

  • 修改 mysql.user 表,把 root 的 Host 改为 %
  • 刷新权限
  • 检查是否可以链接,不可以的话需要检查配置和端口防火墙
  • 检查 my.cnf 配置,确保 bind-address 是 0.0.0.0
  • 检查防火墙是否开放 3306 端口

到此这篇关于MySQL数据库无法远程连接问题的文章就介绍到这了,更多相关MySQL数据库无法远程连接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MYSQL同步 Slave_IO_Running: No 或者Slave_SQL_Running: No的解决方法[已测]

    MYSQL同步 Slave_IO_Running: No 或者Slave_SQL_Running: No的解决方法[已测

    为了服务器更好的安全特将mysql服务器同步一下,show slave status\G出现了Slave_IO_Running: No 错误,特整理了下,方便以后配置
    2011-06-06
  • mysql 无法联接常见故障及原因分析

    mysql 无法联接常见故障及原因分析

    这篇文章主要介绍了mysql 无法联接常见故障及原因分析,本文是小编日常收集整理的,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • mysql和oracle默认排序的方法 - 不指定order by

    mysql和oracle默认排序的方法 - 不指定order by

    这篇文章主要介绍了mysql和oracle默认排序的方法 - 不指定order by。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • mysql 8.0.18 安装配置图文教程

    mysql 8.0.18 安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.18 安装配置图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • MySQL 8.0 之索引跳跃扫描(Index Skip Scan)

    MySQL 8.0 之索引跳跃扫描(Index Skip Scan)

    这篇文章主要介绍了MySQL 8.0 之索引跳跃扫描(Index Skip Scan)的相关资料,帮助大家学习MySQL8.0的新特性,感兴趣的朋友可以了解下
    2020-10-10
  • mysql如何查看binlog日志

    mysql如何查看binlog日志

    该文章介绍了如何在MySQL中使用命令来查询日志状态、获取binlog文件列表、查看特定binlog文件内容等,通过这些命令,用户可以了解当前MySQL日志的状态,查看binlog文件的具体内容等
    2026-05-05
  • MySQL基本查询示例总结

    MySQL基本查询示例总结

    这篇文章主要介绍了MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-05-05
  • 详解 MySQL 执行计划

    详解 MySQL 执行计划

    这篇文章主要介绍了MySQL 执行计划的相关资料,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下
    2020-12-12
  • MySQL数据表索引命名规范的实现示例

    MySQL数据表索引命名规范的实现示例

    索引是提高查询性能的重要工具,本文主要介绍了MySQL数据表索引命名规范的实现示例,包括不同类型索引的命名方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • 全面详解MySQL单行函数分析

    全面详解MySQL单行函数分析

    MySQL常见的函数分为单行函数和分组函数,单行函数包含字符函数、数学函数、日期函数、流程控制函数等,下面就详细的来介绍一下MySQL单行函数
    2023-10-10

最新评论