如何知道可以访问某些数据库的所有用户?
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';