用户没有被授予mysql数据库但仍可以查询?

时间:2014-03-07 20:06:02

标签: mysql grant

以下是检查特定用户资助的方法:

mysql> SHOW GRANTS FOR mmuser1;
+-----------------------------------------------------------------------------------------------------------------+
| Grants for mmuser1@%                                                                                   |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'mmuser1'@'%' IDENTIFIED BY PASSWORD '*fesfesfesfes' |
| GRANT ALL PRIVILEGES ON `shopping_mm`.* TO 'mmuser1'@'%'

但是,如果我执行以下操作:

mysql -ummuser1 -p 

我可以访问并查询另一个数据库(体育)。此外,在做的时候:

SELECT Db,User FROM db;

我可以看到此Db与此用户相关联。

如何才能在Grants表中显示?

2 个答案:

答案 0 :(得分:1)

正如SHOW GRANTS Syntax所述:

  

如果仅指定帐户名称的用户名部分,则使用'%'的主机名部分。

您可能已使用明确的主机名授予您的用户权限,例如: 'mmuser1'@'localhost'。正如稍后在同一页面上所述,这可以在连接后进行验证:

  

要列出授予您用于连接服务器的帐户的权限,可以使用以下任何语句:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

或者,只需检查CURRENT_USER

SELECT CURRENT_USER;

答案 1 :(得分:0)

也许你有一个通配符用户,通常默认设置在Mysql中?

用户名或主机的任何或%将允许DB的任何用户名/主机权限,如下图所示

您应该删除MySQL中通常默认的用户

enter image description here

这张图片是与MYSQL一起安装的默认帐户,一旦你创建一个新用户就应该删除它们,因为它们都不是安全的,它们允许 - 任何用户名USAGE访问db的