我在 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 上的数据库。它只显示如下所示的内容。如何为用户“test”授予其他 DB 表的权限?
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
当我尝试以用户测试身份使用 mysql DB 时出现错误:
mysql> use mysql;
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
答案1
在mysql.user表中,您可以为不同的用户指定不同的权限。如果您使用查询浏览器,您可以工具->mysql 管理员,然后转到用户并创建具有权限的新用户或更改其权限。
更改权限后,请不要忘记运行“FLUSH PRIVILEGES”,否则您的更改将不会产生影响。
答案2
您未以用户 test@% 身份登录,因为您拥有第一个匹配的匿名用户帐户 ''@'localhost'。删除 ''@'localhost' 或创建 'test'@'localhost'
您还可以运行mysql_secure_installation
,它将为您处理很多此类问题。