查询MySQL用户两种的最常用方法总结
前言
查询 MySQL 用户有多种方法,主要分为两大类:使用 MySQL 命令行工具和使用图形化界面工具。
我将以最常用和权威的命令行方式为主进行详细说明。
方法一:使用 MySQL 命令行工具(最直接的方法)
首先,你需要使用一个具有足够权限的账户(如 root 用户)登录到 MySQL 服务器。
mysql -u root -p
然后输入密码。
1. 查询所有用户列表(核心方法)
MySQL 将所有用户账户信息存储在默认数据库 mysql 的 user 表中。因此,直接查询该表即可。
SELECT User, Host FROM mysql.user;
解释:
SELECT User, Host: 选择显示用户名列和主机名列。FROM mysql.user: 从mysql数据库的user表中查询。- 在 MySQL 中,一个用户的完整标识是
'用户名'@'主机名'。主机名指定了该用户可以从哪里连接到数据库(例如,'root'@'localhost'和'root'@'%'是两个不同的用户)。
执行结果示例:
+------------------+-----------+ | User | Host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | myapp_user | % | | readonly_user | 192.168.1.% | +------------------+-----------+
2. 获取更详细的用户信息
你可以从 mysql.user 表中选择更多的列来获取用户的详细权限和设置。
SELECT
User,
Host,
account_locked,
password_expired,
authentication_string,
Select_priv,
Insert_priv,
Update_priv,
Delete_priv
FROM mysql.user;
解释:
account_locked: 账户是否被锁定(Y/N)。password_expired: 密码是否过期(Y/N)。authentication_string: 密码的加密哈希值(在 MySQL 5.7.6+ 中,此列取代了password列)。Select_priv,Insert_priv…: 这些列表示用户的全局权限(是否为Y)。
3. 以更清晰的格式查看当前用户
如果你想查看当前登录的是哪个用户,可以使用以下函数:
SELECT CURRENT_USER();
输出示例:
+----------------+ | CURRENT_USER() | +----------------+ | root@localhost | +----------------+
4. 查看当前登录的用户(会话信息)
这个方法显示的是你通过哪个用户认证进入当前会话的,与 CURRENT_USER() 结果一致。
SELECT USER(); -- 或者 SELECT SYSTEM_USER();
方法二:使用图形化界面工具(如 phpMyAdmin, MySQL Workbench)
如果你使用图形化工具,操作会更简单直观。
- 登录到你的数据库管理工具。
- 在左侧的导航栏(对象浏览器)中,找到并点击 “用户和权限” 或 “Users and Privileges”。
- 点击后,工具会自动加载并显示一个所有用户的列表,通常会包含用户名、主机名以及一些基本权限信息。你可以点击具体的用户来查看和管理其详细权限。
重要提示和最佳实践
- 权限要求: 执行
SELECT ... FROM mysql.user需要SELECT权限。通常只有 root 用户或具有全局权限的管理员用户才有此权限。 - 安全警告:
mysql.user表是系统核心表,不要直接使用DELETE,UPDATE,INSERT等语句修改它,除非你非常清楚自己在做什么。建议使用专门的 SQL 命令来管理用户,例如:- 创建用户:
CREATE USER 'username'@'host' IDENTIFIED BY 'password'; - 删除用户:
DROP USER 'username'@'host'; - 授予权限:
GRANT ... ON ... TO 'username'@'host';
- 创建用户:
- 密码字段: 在 MySQL 5.7.6 及以上版本中,密码存储在
authentication_string列。在老版本(如 5.6)中,可能仍然叫Password列。如果你在查询密码哈希值时发现列为空,可能是因为用户使用了mysql_native_password之外的认证插件(如auth_socket)。
总结
对于绝大多数情况,你只需要记住并在 MySQL 命令行中执行这一条命令:
SELECT User, Host FROM mysql.user;
这就能清晰地列出数据库中的所有用户及其允许连接的主机,这是进行用户管理和权限排查的第一步。
到此这篇关于查询MySQL用户两种最常用方法的文章就介绍到这了,更多相关查询MySQL用户内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决mysql @@sql_mode问题---only_full_group_by
这篇文章主要介绍了解决mysql @@sql_mode问题---only_full_group_by,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-09-09


最新评论