让我来描述我的问题:
我有一个只能由一个用户操作的数据库(管理员除外)。我已经通过(CREATE USER 'dbms'@'localhost' IDENTIFIED BY 'password';
)创建了这个用户。然后我创建了数据库本身(CREATE DATABASE dbms_db;
)并授予用户所有权限(GRANT ALL PRIVILEGES ON dbms_db.* to 'dbms'@'localhost';
)。最后,我刷新了权限(FLUSH PRIVILEGES;
)。即使我运行SHOW GRANTS FOR 'dbms'@'localhost';
,结果也是:
+------------------------------------------------------------+
| Grants for dbms@localhost |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dbms'@'localhost' |
| GRANT ALL PRIVILEGES ON `dbms_db`.* TO 'dbms'@'localhost' |
+------------------------------------------------------------+
但是当我尝试使用此用户连接到数据库时,访问被拒绝。
$ mysql -h localhost -u dbms -D dbms_db -p
> ERROR 1044 (42000): Access denied for user 'dbms'@'localhost' to database 'dbms_db'
只是为了澄清,如果我使用root用户,我可以访问数据库。此外,如果我没有使用dbms
标志指定数据库,我可以使用-D
用户连接到MySQL客户端。