我已经创建了数据库,例如'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 OPTION特权使您能够向其他用户授予或从其他用户删除您自己拥有的特权。

出于安全原因,您不应将这种类型的用户帐户用于公众将有权访问的任何进程(即网站)。建议您创建一个仅具有数据库权限的用户用于这种用途。

其他回答

仅从远程服务器访问mydb数据库

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

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

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

我可以使它只通过添加GRANT OPTION工作,没有总是接收许可拒绝错误

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

这将对一些人有帮助:

MySQL命令行:

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

遗憾的是,在这一点上newuser没有权限对数据库做任何事情。事实上,如果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这样的客户端

要将数据库:mydb上的所有权限授予用户:myuser,只需执行:

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

or:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

PRIVILEGES关键字不是必需的。

我也不知道为什么其他答案建议在命令的末尾加上IDENTIFIED BY 'password'。我认为这不是必需的。

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,然后执行像创建、选择和插入操作这样的命令。