授予权限时不出现拒绝访问错误
尝试授予权限时,MySQL 用户可能会遇到错误“Access returned for user 'root' @'localhost'(使用密码:YES)。”这可能令人困惑,因为用户似乎拥有必要的权限。
验证权限
要确认用户具有适当的权限,请运行以下命令:
SELECT user(); SELECT current_user(); SHOW GRANTS FOR 'root'@'localhost'; SELECT * FROM mysql.user WHERE User='root';
这些命令应验证用户确实是 root@localhost 并具有必要的权限,包括:
问题:授予特定表的权限
尽管拥有这些权限,但在尝试授予特定表的权限时可能会出现错误:
GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;
这是因为 mysql.users 表被认为对所有用户都是禁止访问的,除了root。
解决方案:授予所有数据库的权限
要解决此问题,请使用以下命令,该命令授予除 mysql.users 之外的所有数据库的权限:
GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;
使用 %. 代替 .* 确保包括除 mysql.users 表之外的所有数据库。这应该成功授予权限,而不会触发访问被拒绝错误。
以上是尽管拥有必要的权限,但授予 MySQL 权限时为什么会出现'访问被拒绝”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!