我在 mysql 5.1 中创建了用户并赋予了 ALL 权限,详情如下,
mysql> show GRANTS FOR test;
+-------------------------------------------------------------+
| Grants for test@% |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION |
| GRANT ALL PRIVILEGES ON `tt`.* TO 'test'@'%' |
+-------------------------------------------------------------+
2 rows in set (0.00 sec)
但是 show databases 不显示 mysql 上的数据库。它仅显示如下。如何为其他数据库的表以及用户“测试”授予特权?
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
当我尝试使用 mysql 数据库作为用户测试时出错:
mysql> use mysql;
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
您没有以用户 test@% 的身份登录,因为您首先匹配的是匿名用户帐户 ''@'localhost'。删除 ''@'localhost' 或创建 'test'@'localhost'
你也可以运行
mysql_secure_installation
which 会为你处理很多事情。在 mysql.user 表中,您可以为不同的用户指定不同的权限。如果您使用的是查询浏览器,您可以工具 - > mysql 管理员然后转到用户并创建具有权限的新用户或更改其权限。
更改权限后不要忘记运行“FLUSH PRIVILEGES”,否则您的更改不会影响。