10、MySQL 8.0参考手册 4.5.1.3 mysql日志记录

4.5.1.3 mysql日志记录

MySQL的客户端可以做这些类型的日志记录,用于交互式执行的语句:

  • 在Unix上,mysql将语句写入历史文件。默认情况下,该文件.mysql_history在您的主目录中命名 要指定不同的文件,请设置MYSQL_HISTFILE环境变量的值 

  • 在所有平台上,如果--syslog给出选项,mysql会将语句写入系统日志记录工具。在Unix上,这是 syslog在Windows上,它是Windows事件日志。记录消息出现的目的地取决于系统。在Linux上,目标通常是 /var/log/messages文件。

以下讨论描述适用于所有日志记录类型的特征,并提供特定于每种日志记录类型的信息。

记录如何发生

对于每个启用的日志记录目标,语句记录如下所示:

  • 只有交互式执行语句时才会记录语句。语句是非交互式的,例如,从文件或管道读取时。也可以通过使用--batch or --execute选项来禁止语句记录

  • 如果语句与“ 忽略 ”列表中的任何模式匹配,语句将被忽略并且不记录该列表稍后介绍。

  • mysql会分别记录每个无符号的非空语句行。

  • 如果一个非关键语句跨越多行(不包括终止分隔符), mysql会连接这些行以形成完整的语句,将换行符映射到空格,并记录结果以及分隔符。

因此,跨越多行的输入语句可以被记录两次。考虑这个输入:

mysql> SELECT
    -> 'Today is'
    -> ,
    -> CURDATE()
    -> ;

在这种情况下,mysql会记录 “ SELECT ”“ 'Today is' ”, “  ”“ CURDATE() ”“  线条,因为它读取它们。它还会在映射SELECT\n'Today is'\n,\nCURDATE()之后记录完整的语句SELECT 'Today is' , CURDATE(),再加上一个分隔符。因此,这些行出现在记录输出中:

SELECT
'Today is'
,
CURDATE()
;
SELECT 'Today is' , CURDATE();

mysql会忽略与忽略 ”列表中的任何模式匹配的记录目的语句默认情况下,模式列表是 "*IDENTIFIED*:*PASSWORD*"忽略引用密码的语句。模式匹配不区分大小写。在模式中,两个字符是特殊的:

  • ? 匹配任何单个字符。

  • * 匹配零个或多个字符的任何序列。

要指定其他模式,请使用该 --histignore选项或设置 MYSQL_HISTIGNORE环境变量。(如果两者都指定,则优先选项值。)该值应该是一个或多个模式的冒号分隔列表,它附加到默认模式列表中。

在命令行中指定的模式可能需要引用或转义,以防止命令解释器专门处理它们。例如, 除了引用密码的语句之外,要禁止登录 UPDATEDELETE语句,请像这样调用mysql

shell> mysql --histignore="*UPDATE*:*DELETE*"
控制历史文件

.mysql_history文件应该以限制性的接入方式进行保护,因为敏感信息可能会被写入到它,如包含口令的SQL语句的文本。请参见第6.1.2.1节“密码安全的最终用户指南”

如果您不想维护历史文件,请先删除.mysql_history, 如果它存在。然后使用以下任一技术来防止再次创建它:

  • MYSQL_HISTFILE环境变量设置/dev/null要使此设置在您每次登录时生效,请将其放入您的某个shell的启动文件中。

  • 创建.mysql_history为符号链接/dev/null这只需要做一次:

    shell> ln -s /dev/null $HOME/.mysql_history
系统日志记录特征

如果--syslog给出选项,则 mysql将交互式语句写入系统日志记录工具。消息日志记录具有以下特征。

记录发生在“ 信息 ”层面。这对应于Unix / Linux 功能和 Windows事件日志LOG_INFO优先级 请参阅您的系统文档以配置您的记录功能。syslogsyslogEVENTLOG_INFORMATION_TYPE

消息大小限制为1024字节。

消息由标识符 MysqlClient和这些值组成:

  • SYSTEM_USER

    系统用户名(登录名)或-- 用户未知。

  • MYSQL_USER

    MySQL用户名(用--user选项指定 )或 --用户未知。

  • CONNECTION_ID

    客户端连接标识符。CONNECTION_ID()与会话中函数值相同 

  • DB_SERVER

    服务器主机或--主机未知。

  • DB

    默认数据库或者--没有选择数据库。

  • QUERY

    记录声明的文本。

以下是使用Linux在Linux上生成的输出示例 --syslog此输出格式化为可读性; 每条记录的消息实际上只占一行。

本文由学什么技术好提供翻译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值