查询MySQL用户两种的最常用方法总结

 更新时间:2025年12月23日 08:36:05   作者:青草地溪水旁  
在MySQL数据库管理中,查看用户信息是权限控制和安全审计的基础操作,这篇文章主要介绍了查询MySQL用户两种的最常用方法,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

查询 MySQL 用户有多种方法,主要分为两大类:使用 MySQL 命令行工具使用图形化界面工具

我将以最常用和权威的命令行方式为主进行详细说明。

方法一:使用 MySQL 命令行工具(最直接的方法)

首先,你需要使用一个具有足够权限的账户(如 root 用户)登录到 MySQL 服务器。

mysql -u root -p

然后输入密码。

1. 查询所有用户列表(核心方法)

MySQL 将所有用户账户信息存储在默认数据库 mysqluser 表中。因此,直接查询该表即可。

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)

如果你使用图形化工具,操作会更简单直观。

  1. 登录到你的数据库管理工具。
  2. 在左侧的导航栏(对象浏览器)中,找到并点击 “用户和权限”“Users and Privileges”
  3. 点击后,工具会自动加载并显示一个所有用户的列表,通常会包含用户名、主机名以及一些基本权限信息。你可以点击具体的用户来查看和管理其详细权限。

重要提示和最佳实践

  1. 权限要求: 执行 SELECT ... FROM mysql.user 需要 SELECT 权限。通常只有 root 用户或具有全局权限的管理员用户才有此权限。
  2. 安全警告mysql.user 表是系统核心表,不要直接使用 DELETE, UPDATE, INSERT 等语句修改它,除非你非常清楚自己在做什么。建议使用专门的 SQL 命令来管理用户,例如:
    • 创建用户: CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    • 删除用户: DROP USER 'username'@'host';
    • 授予权限: GRANT ... ON ... TO 'username'@'host';
  3. 密码字段: 在 MySQL 5.7.6 及以上版本中,密码存储在 authentication_string 列。在老版本(如 5.6)中,可能仍然叫 Password 列。如果你在查询密码哈希值时发现列为空,可能是因为用户使用了 mysql_native_password 之外的认证插件(如 auth_socket)。

总结

对于绝大多数情况,你只需要记住并在 MySQL 命令行中执行这一条命令

SELECT User, Host FROM mysql.user;

这就能清晰地列出数据库中的所有用户及其允许连接的主机,这是进行用户管理和权限排查的第一步。

到此这篇关于查询MySQL用户两种最常用方法的文章就介绍到这了,更多相关查询MySQL用户内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql虚拟列的使用场景

    Mysql虚拟列的使用场景

    MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧
    2025-01-01
  • my.cnf(my.ini)重要参数优化配置说明

    my.cnf(my.ini)重要参数优化配置说明

    本文针对mysql不同存储引擎,MyISAM与Innodb进行了讲解如何进行my.cnf(my.ini)的参数优化
    2018-03-03
  • MySQL索引的5种应用

    MySQL索引的5种应用

    本文主要介绍了MySQL索引的5种应用,包含聚集索引,唯一索引,非唯一(普通)索引,全文索引,组合索引等,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • MYSQL增加索引语句小结

    MYSQL增加索引语句小结

    这篇文章主要给大家介绍了关于MYSQL增加索引的相关资料,索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针,需要的朋友可以参考下
    2023-09-09
  • mysql 5.7 zip archive版本安装教程

    mysql 5.7 zip archive版本安装教程

    这篇文章主要为大家详细介绍了mysql 5.7 zip archive版本安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • mysql小版本升级实战小结

    mysql小版本升级实战小结

    本文主要介绍了mysql小版本升级实战小结,包括环境检查、数据备份、服务停止、选择二进制或RPM安装方式、配置调整、服务重启及验证,感兴趣的可以了解一下
    2025-07-07
  • 解决mysql @@sql_mode问题---only_full_group_by

    解决mysql @@sql_mode问题---only_full_group_by

    这篇文章主要介绍了解决mysql @@sql_mode问题---only_full_group_by,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • MyEclipse连接MySQL数据库图文教程

    MyEclipse连接MySQL数据库图文教程

    这篇文章主要为大家详细介绍了MyEclipse连接MySQL数据库图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • MySQL Limit执行过程分析探索

    MySQL Limit执行过程分析探索

    limit是MySql的内置函数,一般用于查询表中记录的条数,作用是用于限制查询条数,下面这篇文章主要给大家介绍了关于SQL中limit函数语法与用法的相关资料,详细讲了MySQL Limit执行过程
    2022-12-12
  • MySQL中的DDL、DML与DCL的深度探究

    MySQL中的DDL、DML与DCL的深度探究

    本文系统介绍了MySQL数据库中的三大SQL语句类别DDL(数据定义语言)、DML(数据操纵语言)和DCL(数据控制语言),感兴趣的朋友跟随小编一起看看吧
    2025-07-07

最新评论