如何在MySQL中向用户授予数据库创建特权


11

以下命令为用户“ admin”提供所有数据库中的所有特权。但是它不允许'admin'创建数据库。

GRANT ALL ON * . * TO 'admin'@'localhost'; 

如何为“管理员”提供访问权限以创建数据库?

当我尝试创建数据库时,出现以下错误-

错误1044(42000):用户'admin'@'localhost'对数据库'newdb'的访问被拒绝


你用了GRANT ALL ON *.* TO 'admin'@'localhost';吗?在您的示例中,您说您运行了:GRANT ALL ON * . * TO 'admin'@'hostname';,但hostname与相比是一个不同的主机localhost
oNare 2015年

主机名是“ localhost”。
Abhishek 2015年

运行该链接时,您是否以“ root”身份连接GRANT
里克·詹姆斯

是。运行该GRANT时,我以“ root”身份连接。
Abhishek 2015年

您是否flush privileges;以root用户身份尝试过?
dwjv

Answers:


5

所有特权包括“所有”,“特权选项”除外。因此,上述命令也将允许管理员用户创建数据库。

您可能想显示您得到的错误。请注意,在上面的GRANT中,您也没有为管理员用户指定密码。

更新:

您应该能够执行以下操作:

以root身份登录并创建用户:

$] mysql -uroot -p
mysql> grant all privileges on *.* to 'admin'@'localhost';

以管理员身份登录(无密码):

$] mysql -uadmin -p
mysql> create database admin;

登录时,可以按以下方式验证特权:

mysql> show grants;

要么

mysql> show grants for current_user();

mysql> select current_user() 将显示您登录的用户身份。


我在问题中添加了错误。
Abhishek 2015年

@abhishek更新答案。...btw导致上述错误的命令是什么?检查您的用户获得了哪些补助?您确定要以管理员用户身份连接吗?
mysql_user 2015年

是的,我100%确定我以管理员用户身份连接。
Abhishek 2015年

mysql>显示授权;+ ------------------------------------------------- ---------------------------- + | admin @ localhost的授予| + ------------------------------------------------- ---------------------------- + | 允许使用通过密码<secret>标识为'admin'@'localhost' | 将所有特权授予newdb。*至'admin'@'localhost'| + ------------------------------------------------- ---------------------------- +设置2行(0.00秒)
Abhishek 2015年

请注意,您只有mbdb拥有所有privs ...,因此您将无法使用任何其他db!
mysql_user 2015年

0

新用户无权对数据库执行任何操作。实际上,如果新用户甚至尝试登录(使用密码,密码),他们将无法访问MySQL Shell。

因此,您需要为用户提供访问权限

GRANT ALL PRIVILEGES ON * . * TO 'admin'@'localhost'; 

该命令中的星号分别表示它们可以访问的数据库和表,该特定命令允许用户读取,编辑,执行和执行所有数据库和表中的所有任务。

最终确定了要为新用户设置的权限后,请务必确保重新加载所有权限。

FLUSH PRIVILEGES;

现在,所有更改都将生效。


GRANT命令不需要刷新特权。
mysql_user 2015年

是的..我同意....但是当我们直接使用诸如INSERT,UPDATE或DELETE之类的语句修改对表的授予时,需要FLUSH PRIVILAGES ...感谢@mysql_user
Mathew
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.