我有 mysql 服务器。
我的应用程序和外部审计员(使用 mysql workbench 的人员)可以访问该服务器。
审计员有特定的用户和密码以及专用 IP,并且仅授予选择权限。
我需要记录审计员的活动。
我曾在 serverfault 上阅读过类似的问题,但是没有看到任何可接受的答案,即 SQL 服务器是否可以仅为特定用户进行 SQL 日志记录。
但是,是否有可能以及如何记录来自审计员 IP 的网络包,但只记录文本(查询),而不是完整的包?
还有其他解决方案吗?我如何监控审计员在服务器上做什么?
答案1
但是,是否有可能以及如何记录来自审计员 IP 的网络包,但只记录文本(查询),而不是完整的包?
对的,这是可能的:
tcpdump -s0 -i eth0 src host auditors.ip and dst port 3306 -w mysql.pcap
然后您可以通过运行以下命令仅过滤 MySQL 查询:
while read stream; do \
tshark -qz follow,tcp,ascii,$stream -r mysql.pcap; done \
< <(tshark -R "mysql" -T fields -e tcp.stream -r mysql.pcap | sort | uniq)