文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  密码和日志记录

8.1.2.3 密码和日志记录

密码可以在 SQL 语句中以明文形式编写,例如 CREATE USERGRANTSET PASSWORD。如果 MySQL 服务器按原样记录此类语句,则其中的密码将对任何可以访问日志的人可见。

语句日志记录避免为以下语句以明文形式写入密码

CREATE USER ... IDENTIFIED BY ...
ALTER USER ... IDENTIFIED BY ...
SET PASSWORD ...
START REPLICA ... PASSWORD = ...
CREATE SERVER ... OPTIONS(... PASSWORD ...)
ALTER SERVER ... OPTIONS(... PASSWORD ...)

这些语句中的密码会被重写,以便它们不会在写入到通用查询日志、慢查询日志和二进制日志的语句文本中出现。重写不适用于其他语句。特别是,INSERTUPDATE 语句,针对 mysql.user 系统表,这些语句引用了文字密码,它们会被按原样记录,因此您应该避免此类语句。(直接修改授予表是不推荐的。)

对于通用查询日志,可以通过启动服务器时使用 --log-raw 选项来抑制密码重写。出于安全原因,不建议在生产环境中使用此选项。出于诊断目的,查看服务器接收到的语句的准确文本可能很有用。

默认情况下,审计日志插件生成的审计日志文件的内容未加密,可能包含敏感信息,例如 SQL 语句的文本。出于安全原因,应将审计日志文件写入仅 MySQL 服务器和有权查看日志的用户可以访问的目录。请参阅 第 8.4.5.3 节,“MySQL 企业版审计安全注意事项”.

如果安装了查询重写插件,则服务器接收到的语句可能会被重写(请参阅 查询重写插件)。在这种情况下,--log-raw 选项会影响语句日志记录,如下所示

  • 没有 --log-raw,服务器会记录查询重写插件返回的语句。这可能与接收到的语句不同。

  • 使用 --log-raw,服务器会记录接收到的原始语句。

密码重写的一个影响是,无法解析的语句(例如,由于语法错误)不会写入通用查询日志,因为无法确定它们是否无密码。需要记录所有语句(包括有错误的语句)的用例应使用 --log-raw 选项,但要记住,这也会绕过密码重写。

密码重写仅在预期使用明文密码时发生。对于语法期望使用密码哈希值的语句,不会进行重写。如果错误地为这种语法提供了明文密码,则密码将按原样记录,不会进行重写。

为了防止日志文件被不当泄露,请将它们放在一个目录中,该目录限制了服务器和数据库管理员的访问权限。如果服务器将日志记录到 mysql 数据库中的表中,则仅向数据库管理员授予对这些表的访问权限。

副本在其连接元数据存储库中存储复制源服务器的密码,默认情况下,该存储库是名为 slave_master_infomysql 数据库中的一个表。在数据目录中使用文件作为连接元数据存储库现在已弃用,但仍然可以使用(参见 第 19.2.4 节,“中继日志和复制元数据存储库”)。确保只有数据库管理员可以访问连接元数据存储库。除了将密码存储在连接元数据存储库中之外,还可以使用 START REPLICASTART GROUP_REPLICATION 语句来指定连接到源的凭据。

使用受限访问模式来保护包含日志表或日志文件的数据库备份,这些文件包含密码。