4.5.1.3 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
环境变量。(如果两者都指定,则优先选项值。)该值应该是一个或多个模式的冒号分隔列表,它附加到默认模式列表中。
在命令行中指定的模式可能需要引用或转义,以防止命令解释器专门处理它们。例如, 除了引用密码的语句之外,要禁止登录 UPDATE
和DELETE
语句,请像这样调用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
优先级 。请参阅您的系统文档以配置您的记录功能。syslog
syslog
EVENTLOG_INFORMATION_TYPE
消息大小限制为1024字节。
消息由标识符 MysqlClient
和这些值组成:
SYSTEM_USER
系统用户名(登录名)或
--
用户未知。MYSQL_USER
MySQL用户名(用
--user
选项指定 )或--
用户未知。CONNECTION_ID
:客户端连接标识符。这
CONNECTION_ID()
与会话中的函数值相同 。DB_SERVER
服务器主机或
--
主机未知。DB
默认数据库或者
--
没有选择数据库。QUERY
记录声明的文本。
以下是使用Linux在Linux上生成的输出示例 --syslog
。此输出格式化为可读性; 每条记录的消息实际上只占一行。
本文由学什么技术好提供翻译