我已经创建了数据库,例如'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特权使您能够向其他用户授予或从其他用户删除您自己拥有的特权。
出于安全原因,您不应将这种类型的用户帐户用于公众将有权访问的任何进程(即网站)。建议您创建一个仅具有数据库权限的用户用于这种用途。
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;
这就是我如何创建我的“超级用户”特权(尽管我通常会指定一个主机)。
重要提示
虽然这个答案可以解决访问问题,但WITH GRANT OPTION创建一个MySQL用户,可以编辑其他用户的权限。
GRANT OPTION特权使您能够向其他用户授予或从其他用户删除您自己拥有的特权。
出于安全原因,您不应将这种类型的用户帐户用于公众将有权访问的任何进程(即网站)。建议您创建一个仅具有数据库权限的用户用于这种用途。
这个SQL只授予所有数据库的基本权限。它们对于Drupal或Wordpress来说已经足够了,而且还允许一个开发人员帐户用于本地项目。
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,
INDEX, ALTER, CREATE TEMPORARY TABLES
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';