MySQL:在数据库上授予**全部**特权

我创建了数据库,例如'mydb'。

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;

现在我可以从任何地方登录数据库,但无法创建表格。

如何授予该数据库和(将来)表中的所有权限。 我无法在'mydb'数据库中创建表格。 我总是得到:

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

这是我如何创建我的“超级用户”权限(虽然我通常会指定一个主机)。

重要的提示

虽然此答案可以解决访问问题,但WITH GRANT OPTION会创建一个可以编辑其他用户权限的MySQL用户。

通过授予选项权限,您可以授予其他用户或从其他用户中删除您自己拥有的特权。

出于安全考虑,您不应该将这种类型的用户帐户用于公众可以访问的任何进程(即网站)。 建议您创建一个只有数据库权限的用户才能使用这种类型的用户。


这是一个老问题,但我不认为接受的答案是安全的。 如果你想授予一个数据库的特权,那么创建一个超级用户不错,但不好。

grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';

%似乎不包括套接字通信,即localhost的用途。 WITH GRANT OPTION仅适用于超级用户,否则通常会带来安全风险。

希望这可以帮助。


这对一些人有帮助:

从MySQL命令行:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

可悲的是,在这一点上,newuser没有权限对数据库进行任何操作。 事实上,如果新用户甚至试图登录(使用密码,密码),他们将无法访问MySQL shell。

因此,首先要做的是为用户提供他们需要的信息。

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

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

一旦确定了要为新用户设置的权限,请务必重新加载所有权限。

FLUSH PRIVILEGES;

您的更改现在将生效。

有关更多信息:http://dev.mysql.com/doc/refman/5.6/en/grant.html

如果你不熟悉命令行,那么你可以使用像MySQL工作台,Navicat或SQLyog这样的客户端

链接地址: http://www.djcxy.com/p/11887.html

上一篇: MySQL: Grant **all** privileges on database

下一篇: PHP code is not being executed, instead code shows on the page