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 作为远程用户名很方便,但从安全角度考虑,我建议:
- 创建专用管理账户:
CREATE USER 'admin_remote'@'%' IDENTIFIED BY '复杂密码';GRANT ALL PRIVILEGES ON *.* TO 'admin_remote'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;- 限制访问来源(更安全):
-- 只允许从特定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;