mysql - 如何按用户帐户过滤mysql审计日志

标签 mysql sql audit-logging

我的问题是,即使我禁用了root用户的审核日志记录,但仍然为这些用户进行日志记录。请任何人帮忙。这是我一步一步做的。

[Setp -1]检查审核日志变量。

mysql> SHOW VARIABLES LIKE 'audit_log%';
+-----------------------------+--------------+
| Variable_name               | Value        |
+-----------------------------+--------------+
| audit_log_buffer_size       | 1048576      |
| audit_log_connection_policy | ALL          |
| audit_log_current_session   | ON           |
| audit_log_exclude_accounts  |              |
| audit_log_file              | audit.log    |
| audit_log_flush             | OFF          |
| audit_log_format            | OLD          |
| audit_log_include_accounts  |              |
| audit_log_policy            | ALL          |
| audit_log_rotate_on_size    | 0            |
| audit_log_statement_policy  | ALL          |
| audit_log_strategy          | ASYNCHRONOUS |
+-----------------------------+--------------+
12 rows in set (0.00 sec)

[Setp-2] 以下语句禁用 root 帐户的审核日志记录。

-- audit_log_include_accounts to NULL
SET GLOBAL audit_log_include_accounts = NULL;
SET GLOBAL audit_log_exclude_accounts = root@%;

注意:我使用root@%代替root@localhost,因为这个数据库服务器可以从另一个IP地址访问。

[Setp-3] 我从远程 PC 调用选择语句 SELECT * FROM SSVR_AUDIT_LOG

[Step-4]我检查了数据库服务器中的审核日志。

 <AUDIT_RECORD TIMESTAMP="2016-04-22T03:49:11 UTC" RECORD_ID="593_2016-04-22T01:28:17" NAME="Query" CONNECTION_ID="6" STATUS="0" STATUS_CODE="0" USER="root[root] @  [162.16.22.48]" OS_LOGIN="" HOST="" IP="162.16.22.48" COMMAND_CLASS="show_create_table" SQLTEXT="SHOW CREATE TABLE `SSVR_AUDIT_LOG`"/>
  <AUDIT_RECORD TIMESTAMP="2016-04-22T03:49:12 UTC" RECORD_ID="594_2016-04-22T01:28:17" NAME="Query" CONNECTION_ID="7" STATUS="0" STATUS_CODE="0" USER="root[root] @  [162.16.22.48]" OS_LOGIN="" HOST="" IP="162.16.22.48" COMMAND_CLASS="select" SQLTEXT="SELECT * FROM `SSVR_AUDIT_LOG` LIMIT 0, 1000"/>
  <AUDIT_RECORD TIMESTAMP="2016-04-22T03:49:12 UTC" RECORD_ID="595_2016-04-22T01:28:17" NAME="Query" CONNECTION_ID="7" STATUS="0" STATUS_CODE="0" USER="root[root] @  [162.16.22.48]" OS_LOGIN="" HOST="" IP="162.16.22.48" COMMAND_CLASS="show_fields" SQLTEXT="SHOW COLUMNS FROM `tldssvr`.`SSVR_AUDIT_LOG`"/>
  <AUDIT_RECORD TIMESTAMP="2016-04-22T03:49:13 UTC" RECORD_ID="596_2016-04-22T01:28:17" NAME="Quit" CONNECTION_ID="7" STATUS="0" STATUS_CODE="0" USER="root" OS_LOGIN="" HOST="" IP="162.16.22.48" COMMAND_CLASS="connect"/>

这是我的引用链接enter link description here

最佳答案

我的问题得到了答案。这是正确答案。当您遇到类似问题时,可以按照以下步骤操作。

按帐户过滤审核日志

  1. 列出所有“审核日志”配置项

>	mysql -u root -p
>	SHOW VARIABLES LIKE ‘audit_log%’;
+-----------------------------+--------------+
| Variable_name               | Value        |
+-----------------------------+--------------+
| audit_log_buffer_size       | 1048576      |
| audit_log_connection_policy | ALL          |
| audit_log_current_session   | OFF          |
| audit_log_exclude_accounts  |              |
| audit_log_file              | audit.log    |
| audit_log_flush             | OFF          |
| audit_log_format            | OLD          |
| audit_log_include_accounts  |              |
| audit_log_policy            | ALL          |
| audit_log_rotate_on_size    | 0            |
| audit_log_statement_policy  | ALL          |
| audit_log_strategy          | ASYNCHRONOUS |
+-----------------------------+--------------+

  • 在数据库服务器中添加远程应用程序服务器主机名和 IP 地址。

    > cat /etc/hosts
    > 127.0.0.1   localhost localhost.localdomain localhost4  localhost4.localdomain4
      162.16.22.48 App_PC
     ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

  • 仅对应用程序数据库用户(root)本地主机和远程主机帐户禁用审核日志记录。

  • > mysql –u root –p
    >SET GLOBAL audit_log_include_accounts = NULL;
    >SET GLOBAL audit_log_exclude_accounts = 'root@localhost,root@App_PC';

  • 列出所有“审核日志”配置项并检查audit_log_exclude_account 值。
  • > SHOW VARIABLES LIKE 'audit_log%';
    > +-----------------------------+----------------------------+
    | Variable_name               | Value                      |
    +-----------------------------+----------------------------+
    | audit_log_buffer_size       | 1048576                    |
    | audit_log_connection_policy | ALL                        |
    | audit_log_current_session   | OFF                        |
    | audit_log_exclude_accounts  | root@localhost,root@App_PC |
    | audit_log_file              | audit.log                  |
    | audit_log_flush             | OFF                        |
    | audit_log_format            | OLD                        |
    | audit_log_include_accounts  |                            |
    | audit_log_policy            | ALL                        |
    | audit_log_rotate_on_size    | 0                          |
    | audit_log_statement_policy  | ALL                        |
    | audit_log_strategy          | ASYNCHRONOUS               |
    +-----------------------------+----------------------------+

    关于mysql - 如何按用户帐户过滤mysql审计日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36784737/

    相关文章:

    android - 方法之间暂停

    mysql - 从同一表中选择的 SQL 子查询

    sql - 使用 Node.js 从 MSSQL 请求数据 - 错误

    sql - 在 SQL 中创建查询时需要一些帮助吗?

    mysql - (Mysql) 存储表更改的最有效方法是什么?

    python - SQL 插入不起作用(没有出现错误)

    php - 如何改进查询以按字符而不是字符串进行搜索?

    java - Hibernate中连续命名参数问题(Spring HibernateTemplate)

    sql - 什么是扩展 SQL 模式?

    logging - GCP 日志路由器接收器没有将日志路由到主题?