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'; 

可悲的是,在这一点上,新用户没有权限对数据库做任何事情。 事实上,如果新用户甚至试图登录(使用密码,密码),他们将无法到达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的客户端

1.创建数据库

 CREATE DATABASE db_name; 

2.为数据库db_name创建用户名

 GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password'; 

3.使用数据库

 USE db_name; 

4.最后你在数据库db_name中,然后执行命令如创建,选择和插入操作。

这个SQL授予所有数据库,但只有基本权限。 对于Drupal或者Wordpress来说,它们已经足够了,并且可以为本地项目提供一个开发者账户。

 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password'; 

你好我使用这个代码在MySQL中有超级用户

 GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE, LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN, SUPER ON *.* TO mysql@'%' WITH GRANT OPTION; 

接着

 FLUSH PRIVILEGES; 

我只能通过添加GRANT OPTION才能使其工作,而不会总是收到权限被拒绝的错误

 GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION; 
 GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd'; 

适用于架构上的特权:)

可选:在mypasswd之后,您可以添加WITH GRANT OPTION

只能从远程服务器访问到mydb数据库

 GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21'; 

从远程服务器访问所有数据库。

 GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';