在我的 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
?