我有一个用户,并且我以该用户身份登录。该用户执行以下操作:
创建数据库错误;
工作正常。
将所有 bugs.* 授予“bugs@localost”;
我发现我没有授予访问权限(当前登录的用户)。
我显示登录用户的权限(通过 select user(); 验证)
+------------------------------------------------ -------------------------------------------------- ------------+
|授予 user1@% |
+------------------------------------------------ -------------------------------------------------- ------------+
|将 *.* 上的所有权限授予由密码“*”标识的“user1”@'%' |
|将 aDatabase
.* 上的所有权限授予 'user1'@'%' |
+------------------------------------------------ -------------------------------------------------- ------------+
2 行一组(0.00 秒)
(我将登录的用户更改为 user1,将第二个所有权限更改为 aDatabase
我可以以 root 身份登录并授予权限就好了...
那么,除了“所有权限”之外,我还需要什么权限????以及什么命令将它们授予我。
最佳答案
问题在于执行有问题的语句
grant all on bugs.* to 'bugs@localost';
需要一个名为 GRANT OPTION 的权限,与您可能认为的相反,该权限并不包含在所有权限中。即使如此,该用户也只能将其拥有的权限授予其他用户。请参阅online documentation .
要将 GRANT OPTION 包含在您的第一个授予命令中,请使用以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' WITH GRANT OPTION;
我已从您的授权声明中删除了 IDENTIFIED BY PASSWORD 子句。
关于mysql - 错误 1044 (42000) : Access denied for user '' @'localhost' to database 'db' - I have all privs what more?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15963259/