在 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
输出:
相关文章
使用 Mysqldump 备份 MySQL 中的数据
发布时间:2023/05/09 浏览次数:192 分类:MySQL
-
本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。
更新 MySQL 表中的主键
发布时间:2023/05/09 浏览次数:61 分类:MySQL
-
本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。
Oracle 的 decode 函数在 MySQL 中的等价物
发布时间:2023/05/09 浏览次数:115 分类:MySQL
-
本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。
使用 Ubuntu 连接远程 MySQL 服务器的不同方法
发布时间:2023/05/09 浏览次数:97 分类:MySQL
-
在本文中我们将学习如何使用 Ubuntu 连接远程 MySQL 服务器来操作数据以及启动和停止 MySQL 服务器。
在 Linux 中安装 MySQL 客户端
发布时间:2023/05/09 浏览次数:72 分类:MySQL
-
在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。
在 MySQL 中转换为十进制
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。
在 MySQL 中获取当前日期和时间
发布时间:2023/05/09 浏览次数:145 分类:MySQL
-
本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间
更改 MySQL 服务器中的 max_allowed_packet Size
发布时间:2023/05/09 浏览次数:142 分类:MySQL
-
本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。
MySQL 货币数据类型
发布时间:2023/05/09 浏览次数:192 分类:MySQL
-
本篇文章介绍最适合在 MySQL 中存储货币值的 DECIMAL(P,D) 数据类型。MySQL 货币数据类型 货币价值需要准确的表示。