我已经创建了数据库,例如“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;
这就是我创建“ super 用户”特权的方式(尽管我通常会指定一个主机)。
重要的提示
虽然此答案可以解决访问问题,但是WITH GRANT OPTION创建了一个可以edit the permissions of other users的MySQL用户。

出于安全原因,您不应将这种类型的用户帐户用于公众可以访问的任何过程(即网站)。建议您将create a user with only database privileges用于这种用途。

10-08 20:19