394 字
2 分钟
数据库权限修改

数据库权限修改#

解决方案#

您需要为这个新创建的 'root'@'%' 用户授予适当的数据库访问权限:

方案1:授予所有权限(推荐用于管理)#

-- 授予所有数据库的所有权限(类似超级用户)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;

方案2:授予特定数据库的权限#

-- 授予特定数据库的所有权限(例如 test 数据库)
GRANT ALL PRIVILEGES ON test.* TO 'root'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

方案3:授予只读权限(更安全)#

-- 授予所有数据库的只读权限
GRANT SELECT ON *.* TO 'root'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

验证权限#

授予权限后,您可以验证用户的权限:

-- 查看用户权限
SHOW GRANTS FOR 'root'@'%';

安全建议#

虽然使用 root 作为远程用户名很方便,但从安全角度考虑,我建议:

  1. 创建专用管理账户
CREATE USER 'admin_remote'@'%' IDENTIFIED BY '复杂密码';
GRANT ALL PRIVILEGES ON *.* TO 'admin_remote'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  1. 限制访问来源(更安全):
-- 只允许从特定IP段连接
CREATE USER 'admin_remote'@'192.168.88.%' IDENTIFIED BY '复杂密码';
GRANT ALL PRIVILEGES ON *.* TO 'admin_remote'@'192.168.88.%';
FLUSH PRIVILEGES;

总结#

您遇到的问题是因为新创建的 'root'@'%' 用户还没有被授予访问普通数据库的权限。只需要执行相应的 GRANT 语句即可解决。

建议操作

-- 在每台MySQL服务器上执行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

执行后,您再用这个账户远程连接,就能看到所有数据库了。#

数据库权限修改
https://fuwari.vercel.app/posts/数据库/数据库权限修改/
作者
肥猫少杰
发布于
2026-06-09
许可协议
CC BY-NC-SA 4.0