在 MySQL 中获取命令历史记录
本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。
MySQL命令历史
我们将使用 Windows 和 Linux (Ubuntu 20.04) 操作系统来了解获取 MySQL 命令历史记录的不同方法。
对于 Windows 操作系统,我们将使用 MySQL Workbench 和 Windows 命令行(也称为 cmd 和命令提示符)以文件和表格的形式访问 MySQL 命令的历史记录。
对于 Linux 操作系统,我们将使用 Linux shell(终端)访问 MySQL 命令历史记录。
使用 Windows 命令行获取 MySQL 中的命令历史记录
在这里,我们将探讨三种在 MySQL 中获取命令历史记录的方法。
以表格形式获取所有 MySQL 命令的历史记录
- 打开 Windows 命令行并转到默认位于 C:\Program Files\MySQL\MySQL Server 8.0\bin 的 MySQL bin 文件夹。
- 使用您的登录凭据登录到 MySQL。
-
运行以下两个查询以打开 MySQL 查询日志并以表格形式准备 MySQL 命令的历史记录。
SET GLOBAL log_output = 'table'; SET GLOBAL general_log = 'on';
-
执行以下查询以获取已执行的 MySQL 命令的历史记录作为输出。
SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
convert()
方法将参数字段的十六进制值转换为文本。 您还可以使用 MySQL 5.7 或更高版本获取十六进制值的参数属性值。
由于我们在命令行上的空间有限,我们选择特定的字段如下:
SELECT a.event_time,a.user_host, a.thread_id, a.server_id,
CONVERT(a.argument USING utf8) AS arugment
FROM mysql.general_log a LIMIT 10;
输出:
获取文件中所有 MySQL 命令的历史记录
这种方法与前一种方法非常相似。 我们只需在登录 MySQL 后执行以下查询。
SET GLOBAL log_output = 'file';
SET GLOBAL general_log_file = "/yourPath/logfile.log";
SET GLOBAL general_log = 'on';
现在,在指定路径找到文件并打开它以查看所有详细信息。 通常,filename.log 文件如下所示。
输出:
获取指定会话最后执行的 MySQL 命令的历史记录
我们还可以仅通过对特定会话使用以下查询来查找最后执行的 MySQL 命令。 我们在这里为 root 执行此操作,由于命令行空间有限,我们只选择了两个字段。
SELECT a.event_time,CONVERT(a.argument USING utf8) AS arugment
FROM mysql.general_log a WHERE user_host LIKE 'root%'
ORDER BY a.event_time DESC LIMIT 1;
输出:
在 Windows 上使用 MySQL Workbench 获取 MySQL 命令历史记录
我们在这里也有三种方法来检索 MySQL 命令的历史记录。 这些方法与我们使用 Windows 命令行讨论的方法相同。 但这一次,我们将在 MySQL Workbench 上执行。
以表格形式获取 MySQL 命令历史记录
我们执行以下查询以表格形式获取 MySQL 命令的历史记录。 此处,convert() 方法将参数字段的 blob 值转换为文本。
如果您使用的是 MySQL 5.7 或更高版本,您还可以在 Workbench 中将参数属性的值作为 blob 获取。
SET GLOBAL log_output = 'table';
SET GLOBAL general_log = 'on';
SELECT a.*, CONVERT(a.argument USING utf8) FROM mysql.general_log a;
输出:
我们可以使用 History Output 选项(在下面的屏幕截图中突出显示)来获取命令的历史记录,而不是编写查询。
在一个文件或多个文件中获取 MySQL 命令历史记录
我们可以在指定路径的一个文件中获取所有历史记录。
SET GLOBAL log_output = 'file';
SET GLOBAL general_log_file = "/yourPath/logfile.log";
SET GLOBAL general_log = 'on';
我们还可以转到 C:\Users\DELL\AppData\Roaming\MySQL\Workbench\sql_history 位置,查看所有具有 MySQL 命令历史的单个文件。
获取上次执行的查询的 MySQL 命令历史记录
SELECT a.*,CONVERT(a.argument USING utf8) AS arugment
FROM mysql.general_log a WHERE user_host LIKE 'root%'
ORDER BY a.event_time DESC LIMIT 1;
输出:
使用 Ubuntu 终端获取 MySQL 命令的历史记录
以超级用户身份登录后运行以下命令。
cat ~/.mysql_history
输出:
您可以运行以下命令来消除空格并使其更具可读性。
sed "s/\\\040/ /g" < ~/.mysql_history
输出:
相关文章
如何在 MySQL 中声明和使用变量
发布时间:2024/03/26 浏览次数:115 分类:MySQL
-
当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。
在 MySQL 中使用 Mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:MySQL
-
你将了解阻止主机的原因。此外,通过使用 phpMyAdmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。