MySQL8.0开启root用户远程访问权限的配置与排错步骤(保姆级教程)

 更新时间:2026年07月29日 09:28:59   作者:君穆南  
这篇文章主要介绍了MySQL8.0开启root用户远程访问权限的配置与排错步骤的相关资料,这篇指南手把手教你配置权限、修改host为%,避开常见踩坑,快速搞定防火墙和加密认证错误,需要的朋友可以参考下

环境说明:MySQL 8.0.x、Windows / Linux 环境

适用场景:本地开发连接远程数据库、服务器部署项目等。

在默认情况下,MySQL 8.0 为了保证安全性,root 用户仅允许在 localhost(即本机)登录。当我们需要使用 Navicat、DBeaver 或代码等客户端进行远程连接时,就会报错 Host 'xxx' is not allowed to connect to this MySQL server
下面是完整的配置与排错步骤:

第一步:查询当前 root 用户的访问权限

首先,登录 MySQL 数据库,切换至 mysql 核心库,查看当前用户的访问主机限制。

-- 1. 切换至 mysql 数据库
USE mysql;
-- 2. 查询 user 表中的用户名和允许连接的主机(host)
SELECT user, host, plugin FROM user WHERE user = 'root';

结果解析

正常情况下,你会看到 root 用户的 host 字段值为 localhost,这意味着当前 root 被限制为仅限本地访问。

(注:这里额外查了 plugin 字段,是为了后续排查 MySQL 8 的密码加密规则做准备)。

第二步:修改 root 用户的 host 为%

root 用户的访问主机修改为 %% 在 MySQL 中代表通配符,表示允许任意 IP 地址连接)。

-- 将 root 用户的 host 修改为 %
UPDATE user SET host = '%' WHERE user = 'root';

⚠️ 【MySQL 8 极易踩坑的注意点】

执行完 UPDATE 后,必须立刻刷新权限,否则配置不会生效!

-- 刷新系统权限表(必须执行)
FLUSH PRIVILEGES;

进阶建议
在生产环境中,出于安全考虑,极不推荐直接使用 %。建议将 host 设置为具体的客户端外网 IP(例如:192.168.1.100),或者使用网段(例如:192.168.1.%)。

第三步:检查客户端或服务端防火墙设置

很多时候数据库配置没问题,但依然连不上,90% 是因为防火墙拦截了 MySQL 的默认端口 3306

方案 A:Windows 防火墙(入站规则配置)

(不建议直接“关闭防火墙”,有安全隐患,推荐放行端口)

  1. 打开 控制面板 -> Windows Defender 防火墙 -> 高级设置。
  2. 点击左侧的 入站规则,右侧点击 新建规则。
  3. 选择 端口 -> TCP -> 特定本地端口输入 3306
  4. 选择 允许连接,一路下一步,命名为 MySQL_3306,保存即可。

方案 B:Linux 防火墙(如 firewalld)

# 开放 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重载防火墙规则
firewall-cmd --reload

第四步:测试连接(Try)

打开你的数据库连接工具(如 Navicat),输入服务器的公网IP、root账号和密码进行连接测试。

终极排错:如果依然报错怎么办?(Authentication plugin问题)

如果在第三步测试时,你遇到了如下错误:

Authentication plugin 'caching_sha2_password' cannot be loaded...

原因

MySQL 8.0 默认的密码加密规则变成了 caching_sha2_password,而像 Navicat 11 或部分老旧客户端不支持这种加密方式。

解决方案

将 root 用户的加密方式改回 MySQL 5.7 时代的 mysql_native_password

-- 修改加密规则并重新设置密码('你的密码' 替换为实际密码)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
-- 再次刷新权限!
FLUSH PRIVILEGES;

执行完上述 SQL 后,再次尝试客户端连接,成功率可达 100%。

总结

到此这篇关于MySQL8.0开启root用户远程访问权限的配置与排错步骤的文章就介绍到这了,更多相关MySQL开启root用户远程访问权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql中replace与replace into的用法讲解

    Mysql中replace与replace into的用法讲解

    今天小编就为大家分享一篇关于Mysql中replace与replace into的用法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • MYSQL5.7 全文检索中文无返回数据的问题解决

    MYSQL5.7 全文检索中文无返回数据的问题解决

    本文介绍了MYSQL5.7 全文检索中文无返回数据的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • 浅谈MySQL next-key lock 加锁范围

    浅谈MySQL next-key lock 加锁范围

    我们知道MYSQL NEXT-KEY LOCK是用来防止幻读,那么MySQL next-key lock 加锁范围是多少,很多人都不知道,本文就来详细的介绍一下
    2021-06-06
  • mysqldumpslow用法示例(慢查询)

    mysqldumpslow用法示例(慢查询)

    这篇文章主要介绍了mysqldumpslow是mysql自带的用来分析慢查询的工具,需要的朋友可以参考下
    2016-08-08
  • MySQL修改密码的四种实现方式

    MySQL修改密码的四种实现方式

    文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包括关闭MySQL服务、跳过权限表认证、修改密码、刷新权限等步骤
    2025-02-02
  • mysql多条数据合并成一条的3种常见方法

    mysql多条数据合并成一条的3种常见方法

    在实际的应用开发中,有时我们需要将多条数据合并成一条数据,以便更好地进行数据分析和处理,本文就来介绍一下mysql多条数据合并成一条的方法,具有一定的参考价值
    2023-10-10
  • mysql8.0.19忘记密码处理方法详解

    mysql8.0.19忘记密码处理方法详解

    这篇文章主要介绍了mysql8.0.19忘记密码处理方法详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • MySQL查询语句简单操作示例

    MySQL查询语句简单操作示例

    这篇文章主要介绍了MySQL查询语句简单操作,结合实例形式分析了MySQL数据库、数据表创建、数据插入、数据查询等相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • MySQL中浮点型转字符型可能会遇的问题详解

    MySQL中浮点型转字符型可能会遇的问题详解

    类型转换是我们日常开发中经常会遇到的一个需求,最近在将浮点型转换成字符型的时候就遇到了一个问题,所以总结分享出来,下面这篇文章主要给大家介绍了MySQL中关于浮点型转字符型可能遇到的问题的相关资料,需要的朋友可以参考下。
    2017-09-09
  • CentOS7安装MySQL 8.4 + Navicat远程连接新手教程

    CentOS7安装MySQL 8.4 + Navicat远程连接新手教程

    Navicat是高效数据库管理工具,支持多数据库操作,远程连接MySQL是常见的一种功能,这篇文章主要介绍了CentOS7安装MySQL 8.4 + Navicat远程连接的相关资料,需要的朋友可以参考下
    2025-12-12

最新评论