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