如何知道可以访问某些数据库(mysql)的所有用户?

如何知道可以访问某些数据库的所有用户?

user79644的答案可以让用户拥有数据库级别的权限,但是只能使用表级别,列级别或程序级别的权限。 要find所有这些,请使用以下语句:

SELECT user,host FROM db WHERE db='name'; SELECT user,host FROM tables_priv WHERE db='name'; SELECT user,host FROM columns_priv WHERE db='name'; SELECT user,host FROM procs_priv WHERE db='name'; 

至less在MySQL 5.5中,似乎拥有列级特权意味着您拥有表级特权。 拥有表级特权并不意味着您拥有数据库级特权。 不确定程序级别的权限。

连接到mysql实例作为pipe理员用户(通常作为根),并提供以下命令…

 select user from mysql.db where db='DB_NAME'; 
 # current users that access the db mysql> show processlist; +-----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+------+-----------+------+---------+------+-------+------------------+ | 214 | root | localhost | NULL | Query | 0 | NULL | show processlist | +-----+------+-----------+------+---------+------+-------+------------------+ # who can access what at anytime and his privilege level mysql> show grants; +---------------------------------------------------------------------+ | Grants for root@localhost | +---------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | +---------------------------------------------------------------------+ # what privileges are available mysql> show privileges; 

您必须记住,数据库的MySQL GRANT可以包含通配符 。 这个必须在查询中使用LIKE来解释:

 SELECT user,host FROM db WHERE 'name' LIKE db; SELECT user,host FROM tables_priv WHERE db='name'; SELECT user,host FROM columns_priv WHERE db='name'; SELECT user,host FROM procs_priv WHERE db='name';