我创建了数据库,例如'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;
Run Code Online (Sandbox Code Playgroud)
现在我可以从任何地方登录到数据库,但无法创建表.
如何授予该数据库和(将来)表的所有权限.我无法在'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'
Run Code Online (Sandbox Code Playgroud) 所以我试图使用最新版本的MySQLWorkbench(6.3.6)远程连接到MySQL 5.1.x服务器.
我在MySQL提示符下运行了这些命令:
use mysql;
grant all privileges on mydb.* to 'myuser'@'%' identified by 'mypassword';
flush privileges;
Run Code Online (Sandbox Code Playgroud)
我可以使用工作台连接到架构/数据库,但我无法获得表/其他架构对象的列表.
这是我得到的确切答案:
Error Code: 1227 Access denied; you need the SHOW DATABASES privilege for this operation
Run Code Online (Sandbox Code Playgroud)
这是我从节目赠款中得到的回应.我在localhost上以root用户身份运行它.我弄乱了可能识别我的数据库的任何信息.
mysql> show grants for 'mydb'@'%';
+-----------------------------------------------------------------------------------------------------+
| Grants for mydb@% |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'mydb'@'%' IDENTIFIED BY PASSWORD 'mypassword' |
| GRANT ALL PRIVILEGES ON `mydb`.* TO 'mydb'@'%' |
+-----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
关于如何修复它的任何想法?谢谢.