如何修改MariaDB的general_logs中显示为anonymous的连接用户名
问题答复
能否通过Apache配置修改日志标识
不能。MariaDB通用日志(general_log)中记录的连接用户名,是PHP连接数据库时主动传入的数据库认证账户名,和Apache的运行用户无直接关联。你观察到的anonymous标识,是因为PHP代码使用了空用户名连接数据库、或MariaDB开启了匿名登录权限,该逻辑和Apache侧配置无关,无法通过修改Apache配置调整。
调整general_log显示标识的方法
如果希望通用日志中显示apache作为连接标识,只需调整数据库连接配置即可:
- 先登录MariaDB创建对应的数据库用户,参考SQL命令:
-- 创建apache数据库用户 CREATE USER 'apache'@'localhost' IDENTIFIED BY '自定义安全密码'; -- 给用户授予站点数据库的对应权限 GRANT ALL PRIVILEGES ON 你的站点数据库名.* TO 'apache'@'localhost'; FLUSH PRIVILEGES;
- 修改PHP代码中的数据库连接配置,将连接用户名改为
apache,填写你设置的对应密码即可。调整后新的数据库连接就会在general_log中显示为apache。
替代general_log的精准溯源方案
如果需要更全面的SQL请求主体溯源信息(比如定位到具体请求、具体PHP脚本),可使用以下两种方案:
- 开启PHP调用栈日志:修改php.ini配置,开启PHP慢日志并配置记录SQL执行的调用堆栈,可直接定位到发起SQL请求的PHP文件位置。
- 使用MariaDB审计插件:MariaDB自带的
server_audit审计插件支持记录连接来源IP、连接对应的操作系统用户、执行的SQL语句等更多维度信息,比原生general_log的溯源能力更强。参考配置(在/etc/my.cnf.d/mariadb-server.cnf的[mysqld]段添加):
plugin-load-add = server_audit.so server_audit_logging = ON server_audit_events = CONNECT,QUERY server_audit_output_type = FILE server_audit_file_path = /var/log/mariadb/server_audit.log
添加配置后重启MariaDB服务即可生成审计日志。
内容的提问来源于stack exchange,提问作者M3zuss
相关产品推荐
相关产品推荐

