MySQL 数据库服务器通常是开发人员和任何愿意测试结构化查询语言的人的首选。MySQL 具有许多使其可靠、安全和高效的特性。但是,有一些方法可以进一步提高 MySQL 服务器的安全性。其中之一是创建对数据库具有有限权限的用户。
在本教程中,我们将提供更多背景信息,说明为什么您应该创建单独的 MySQL 用户帐户,并介绍如何在Linux 服务器上使用 MySQL SHOW USERS 命令。
为什么要在 MySQL 服务器中创建用户?
每当用户或数据库管理员安装 MySQL时,将创建的第一个用户是 root 用户——MySQL 管理员。root 用户将有权在 MySQL 数据库上执行所有操作。
虽然拥有所有权限似乎是有益的,但这样做会带来自身的安全缺陷,并且在多人之间共享 root 用户是危险的。黑客经常尝试以 root 用户身份登录并窃取托管信息,甚至破坏整个 MySQL 服务器及其数据。因此,系统管理员创建了对某些数据库具有特定权限的用户。换句话说,如果一个帐户的凭证被泄露,影响将是最小的并且是可控的。
如何在 Linux 上的 MySQL 数据库中显示用户
与立即显示所有数据库或表的 SHOW DATABASES 或 SHOW TABLES 命令不同,SHOW USERS 命令在 MySQL 中不存在。即使没有这样的命令,用户也可以使用 MySQL 查询并获得给定 MySQL 数据库服务器中用户的完整列表。
请按照以下步骤获取更多信息。
1.以MySQL根用户身份登录
首先以root 用户身份通过 SSH 登录 VPS 。完成后,使用以下命令进入 MySQL 命令行:
sudo mysql -u root -p
然后,输入您的 MySQL root 密码。
重要的!请记住,系统和 MySQL root 密码是分开的,并且可以不同。
一旦您以 root 用户身份进入 MySQL 控制台,您将能够运行查询以显示其他 MySQL 用户。
2. 使用 MySQL SHOW USERS 查询
使用以下查询显示在数据库服务器中创建的 MySQL 用户:
从 mysql.user 中选择用户;
结果,您将看到已在 MySQL 中创建的所有用户的列表。
请注意,可能存在重复的用户。这是因为 MySQL 根据服务器的来源 IP 地址过滤对服务器的访问。
您还可以使用以下命令添加主机列以查看更多信息:
从 mysql.user 中选择用户,主机;
这样,您将能够看到 MySQL 用户以及他们有权访问的主机或 IP 地址。在我们的例子中,所有用户都来自本地数据库:
3.查看更多MySQL用户信息(可选)
如果您需要有关 MySQL 用户的更多信息,可以在 MySQL 查询的帮助下扩展搜索命令。
例如,以下命令将从用户表中打印出所有可能的信息:
从 mysql.user 中选择 *;
但是,这样的输出可能看起来太乱以至于无法理解。因此,我们建议使用更具体的查询来缩小搜索范围。
以下是一些更受欢迎的用例:
预览表列
以下查询将显示用户表列的预览。如果用户想要检查有关特定表的信息,这将特别有用。
DESC mysql.用户
仅显示唯一的用户名
要跳过重复的用户名,可以使用以下查询:
从 mysql.user 中选择不同的用户;
密码过期和帐户锁定状态
要检查密码过期状态和帐户锁定状态,请使用以下查询:
SELECT user, account_locked, password_expired FROM mysql.user;
显示当前和当前登录的用户
可以使用以下查询显示当前用户:
选择当前用户();
如果您需要更多信息,您可以修改查询以显示当前登录的用户及其状态。此命令有利于查找占用过多资源的空闲用户。
从 information_schema.processlist 中选择用户、主机、命令;
结论
数据库服务器的管理可能是一项具有挑战性的工作。因此,数据库管理员在创建和管理用户权限时必须小心。MySQL SHOW USERS命令允许管理员查看 MySQL 用户以及其他重要信息。
回顾一下,我们已经介绍了如何显示绑定到数据库的 MySQL 用户的基础知识,并学习了如何:
- 列出在给定 MySQL 数据库中创建的所有用户
- 预览 MySQL 数据库表列
- 仅显示表中唯一的用户名
- 检查密码过期和帐户锁定状态
- 在 MySQL 数据库中显示当前和当前登录的用户