访问数据库的用户列表

问题描述 投票:0回答:3

我有一个 MySQL 数据库,由我的一群队友访问。有没有命令可以获取当前正在访问或者已经访问并退出的用户的日志信息?

mysql linux loginfo
3个回答
10
投票

从 mysql 工具运行以下命令以查看所有当前正在运行的进程(包括睡眠连接):

SHOW PROCESSLIST

或者,您可以查询 information_schema 表以获得相同的结果:

select * from information_schema.processlist

要查看所有登录者的历史记录,您可以将通用查询日志配置为转到表,方法是将以下启动参数添加到 mysqld 启动“--log-output=TABLE --general-log”,然后您可以从 mysql 模式中的 General_log 表中查询此信息。以下是您可以使用的查询:

select * from mysql.general_log where command_type = 'Connect';

警告一句,这张桌子可能会变得很大。您需要定期清理它。


1
投票

可以通过查看 SHOW PROCESSLIST 或 INFORMATION_SCHEMA.PROCESSLIST 来了解当前与数据库保持连接的用户。

没有该数据的历史记录。按照其他地方的建议使用通用查询日志并不是一个好主意,因为它根本无法扩展:通用查询日志记录服务器看到的每个语句,并且写入它会大大增加 LOCK_log 和磁盘 I/ 上的争用奥。如果你的通用查询日志是 CSV 表,则无法高效查询,而如果是 MyISAM 表,它本质上会序列化数据库中的所有查询(甚至是读取查询!)。

也就是说,因为每个查询都需要被记录,甚至读取查询。为此,需要写入通用查询日志。为此,请求 MyISAM 日志表上的表锁。即使在低负载服务器上,这也是非常慢的,根本不建议这样做。

不支持其他格式的通用查询日志。

有一组变量可以定义服务器启动、从属连接和用户连接上的操作。

root@localhost [kris]> show global variables like 'init%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| init_connect  |       |
| init_file     |       |
| init_slave    |       |
+---------------+-------+
3 rows in set (0.00 sec)

通过将 init_connect 设置为记录当前用户、当前时间和连接 ID 的插入语句,您可以以更可扩展的方式生成您想要的日志。为此,请使用带有 auto_increment id 的 InnoDB 表。

请注意,出于安全原因,不会针对 root 用户 (SUPER_PRIV) 的登录处理 init_connect。这些将逃脱您的记录。

在 MySQL 5.5 中,审计 API 被添加到服务器中。我相信你真正想要的是一个审计插件。有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.5/en/writing-audit-plugins.html


0
投票
SELECT SUBSTRING_INDEX(host, ':', 1) AS host_short,
       GROUP_CONCAT(DISTINCT user) AS users,
       COUNT(*) AS threads
FROM information_schema.processlist
GROUP BY host_short
ORDER BY COUNT(*), host_short;
+-----------------+------------------------------------------------+---------+
| host_short      | users                                          | threads |
+-----------------+------------------------------------------------+---------+
| 153.16.174.381  | analytics                                      |       1 |
| 84.257.31.98    | replica                                        |       1 |
| 93.114.272.114  | grafana                                        |       2 |
| localhost       | event_scheduler,root                           |       2 |
+-----------------+------------------------------------------------+---------+
© www.soinside.com 2019 - 2024. All rights reserved.