📅  最后修改于: 2023-12-03 15:33:03.670000             🧑  作者: Mango
MySQL 是一个开源的关系型数据库管理系统,它允许用户创建和管理数据库和表格。在 MySQL 中,用户可以被授权不同级别的权限,以访问或操作不同数据库或表格。本文将介绍如何查询 MySQL 中的用户和权限列表。
要查询 MySQL 中的用户列表,可以使用以下 SQL 命令:
SELECT User, Host, authentication_string FROM mysql.user;
此命令将返回 MySQL 数据库中的所有用户及其相关信息,包括用户名,主机名和认证字符串(密码)。
以下是一个示例结果:
| User | Host | authentication_string | | --------- | ------------- | --------------------- | | root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | user | example.com | NULL | | admin | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | testuser | 192.168.1.100 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
要查询 MySQL 中的权限列表,可以使用以下 SQL 命令:
SHOW GRANTS FOR 'username'@'hostname';
此命令将返回指定用户在指定主机上的所有授权信息。
以下是一个示例结果:
| Grants for user@localhost |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| GRANT ALL PRIVILEGES ON database
.* TO 'user'@'localhost |
| GRANT SELECT, INSERT, UPDATE ON database2
.* TO 'user'@'localhost |
| GRANT EXECUTE ON PROCEDURE database3
.procedure
TO 'user'@'localhost |
请注意,此命令返回的结果是一个文本字符串,不是表格。如果要格式化输出,请使用 CONCAT()
函数将授权语句连接在一起:
SELECT CONCAT('SHOW GRANTS FOR \'', User, '\'@\'', Host, '\';') AS Query FROM mysql.user;
此命令将返回一组 SQL 查询,每个查询都将返回指定用户在指定主机上的授权信息。
以下是一个示例结果:
| Query | | ------------------------------------------------------------------------------------- | | SHOW GRANTS FOR 'root'@'localhost'; | | SHOW GRANTS FOR 'user'@'example.com'; | | SHOW GRANTS FOR 'admin'@'%'; | | SHOW GRANTS FOR 'testuser'@'192.168.1.100'; |
通过查询 MySQL 中的用户和权限列表,我们可以轻松地了解数据库中现有的用户及其相关权限。这对于诊断和修复访问问题,以及保护数据库免受不良行为的影响都很有帮助。