在我的 PHP 脚本中,我正在访问两个数据库db1和db2. 我有一个myuser@localhost可以访问db1但无法访问的用户db2。
从mysql.user表中选择时,有一条记录,该用户的主机是通配符%,没有localhost主机。
SELECT user, host FROM mysql.user WHERE user = 'myuser'; 给我吗:
+------------+------+
| user | host |
+------------+------+
| myuser | % |
+------------+------+
1 row in set (0.00 sec)
查看该用户的 GRANTS ,我看到与 for 相同的db1权限db2
SHOW GRANTS FOR 'myuser'@'%';
+-----------------------------------------------------------------------------------------------------------+
| Grants for myuser@% |
+-----------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'myuser'@'%' IDENTIFIED BY PASSWORD '*7733323232...' |
| GRANT ALL PRIVILEGES ON `db1`.* TO 'myuser'@'%' |
| GRANT ALL PRIVILEGES ON `db2`.* TO 'myuser'@'%' |
+-----------------------------------------------------------------------------------------------------------+
在我的 PHP 脚本中,我可以访问db1,但是出现错误:INSERT command denied to user 'myuser'@'localhost' for table 'HISTORY'.
它说用户是myuser@localhost并且人们建议添加权限myuser@localhost但是,为什么这个用户有权访问db1而不是db2?