01-MySQL测评命令

MySQL 5.7/8.0 三级等保现场测评取证命令单:select version() 基础信息与版本识别核查,mysql.user 账户与主机授权清单、connection_control 登录失败处理等身份鉴别核查,用户权限与访问控制核查,日志与审计插件安全审计核查,以及数据完整性、数据保密性、备份恢复、剩余信息保护、个人信息保护、入侵防范、时间同步与日志一致性核查,附主流版本分档差异、重点差异、现场编制建议与取证注意事项。

MySQL数据库三级等级保护现场核查命令脚本(统一编号版) 适用范围:MySQL 5.7/8.0 定位:三级等保现场测评取证命令单,按功能小节组织核查命令、预期现象与判定要点。

基础信息

  • 对应控制点:无对应条款(测评准备项:确认测评对象、版本与部署形态,据此选定后续核查命令)。
  • 判定要点:仅记录事实,不下符合性结论;先确认 5.7/8.0/8.4 版本再选命令(差异见「重点差异」)。
  • 取证要求:version()、@@port、@@datadir 查询截图,登录账号与来源记录,部署形态(单机/主从/集群/云数据库)说明。
select version();                                      -- 查看数据库版本
select @@hostname, @@port;                             -- 查看实例名与端口
select @@basedir, @@datadir, @@socket;                 -- 查看安装目录、数据目录、socket
select @@innodb_data_home_dir, @@innodb_log_group_home_dir;  -- InnoDB 数据/日志目录(备份核查输入)
show databases;                                        -- 查看数据库列表
select user(), current_user();                         -- 查看当前登录用户
  • 备注:用于确认数据库类型、版本、实例标识和现场连接身份。
  • 预期证据:版本查询结果截图、实例信息截图、数据库列表截图。
示例输出(节选)
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.36    |
+-----------+
mysql> select @@hostname, @@port;
+--------------------+-------+
| @@hostname         | @@port|
+--------------------+-------+
| db01               |  3306 |
+--------------------+-------+
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| appdb              |
+--------------------+

身份鉴别

  • 对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别(a 标识唯一/复杂度/定期更换,b 登录失败处理,c 远程管理防窃听,d 组合鉴别)。
  • 判定要点:5.7/8.0 默认均未启用口令复杂度校验,也无原生账户锁定(connection_control 仅延迟不锁定),需插件或 AD/LDAP/堡垒机补偿,缺失判部分符合;空口令/弱口令、远程管理明文传输判不符合。
  • 取证要求:账户清单、口令策略与有效期、失败处理与超时参数查询截图,补偿措施配置截图与访谈纪要。

A. 身份标识唯一、口令复杂度、定期更换

select user, host from mysql.user order by user, host;
select user, host, authentication_string from mysql.user;   -- 口令哈希在 authentication_string(5.7 起已无 password 列),空值需重点核实是否存在空口令
show variables like 'validate_password%';                   -- 8.0 组件为点分变量 validate_password.xxx;5.7 插件为下划线变量 validate_password_xxx
show plugins;
show variables like 'default_password_lifetime';            -- 默认 0=永不过期,示例中的 90 为现场已配置值
select user, host, password_lifetime, password_expired, account_locked from mysql.user;   -- 5.7.6+/8.0 可用
  • 备注:重点看账户是否唯一、是否存在匿名/共享账户,是否配置口令复杂度与有效期。若未启用复杂度插件,需说明是否由 AD、PAM、堡垒机或统一身份认证平台实现。validate_password 组件/插件在 5.7/8.0 默认均未安装,安装前口令不做复杂度校验。
  • 预期证据:账户列表截图、validate_password 或等效策略截图、口令有效期截图、账号管理制度或账号台账。
  • 高风险提示:存在空口令、弱口令或默认口令账户属高风险情形,见 22、高风险判定指引与加固对照表。
示例输出(节选)
mysql> select user, host from mysql.user order by user, host;
+----------+--------------+
| user     | host         |
+----------+--------------+
| appuser  | 192.168.10.% |
| backup   | localhost    |
| root     | localhost    |
+----------+--------------+
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.policy             | MEDIUM |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
mysql> show variables like 'default_password_lifetime';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| default_password_lifetime | 90    |
+---------------------------+-------+

B. 登录失败处理、会话超时退出

show variables like 'connection_control%';                  -- 5.7/8.0 默认均未安装该插件,未安装时本查询返回空集
show variables like 'max_connect_errors';                   -- 默认 100,超限后主机被拉黑(Host is blocked)
show global variables like 'wait_timeout';                  -- 默认 28800(8 小时)
show global variables like 'interactive_timeout';
show status like 'aborted_connects';
select * from information_schema.connection_control_failed_login_attempts;   -- 仅安装 CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS 插件后有值,可看各账户失败次数
  • 备注:重点看是否具备失败登录限制、账户锁定或外围防暴力破解能力,是否设置超时自动退出。社区版原生能力有限时,应补查堡垒机、WAF、主机策略或中间件控制。connection_control 仅在连续失败后增加响应延迟、不直接锁定账户,判定时应说明该边界。
  • 预期证据:相关参数截图、第三方登录失败处理策略截图、运维平台超时配置截图、访谈记录。
示例输出(节选)
mysql> show variables like 'connection_control%';
+-------------------------------------------------+------------+
| Variable_name                                   | Value      |
+-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 5          |
| connection_control_min_connection_delay         | 1000       |
+-------------------------------------------------+------------+
mysql> show global variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 600   |
+---------------+-------+
mysql> show status like 'aborted_connects';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Aborted_connects | 12    |
+------------------+-------+

C. 远程管理传输保密

show variables like 'require_secure_transport';             -- 默认 OFF;ON 表示拒绝非加密连接
show variables like 'have_ssl';                             -- 仅 5.7 有意义;8.0.26 起弃用、8.4 起移除(8.0 查询返回空集,勿据此判未启用 SSL)
show variables like 'ssl_ca';
show variables like 'ssl_cert';
show variables like 'ssl_key';
show status like 'Ssl_cipher';                              -- 5.7/8.0 通用:非空即当前会话已加密
select variable_name, variable_value from performance_schema.global_status
 where variable_name in ('Ssl_version', 'Ssl_cipher');      -- 8.0(尤其 8.0.26+)替代 have_ssl 的查询方式
  • 备注:重点看是否支持并实际启用了 SSL/TLS。仅“支持 SSL”不等于“已强制使用 SSL”,还需结合客户端连接方式和远程管理流程判断(如账号级 REQUIRE SSL)。Ssl_cipher 只反映当前会话,测评客户端本身要用加密方式连接后再取证。
  • 预期证据:SSL 相关参数截图、当前连接 Ssl_cipher 截图、证书文件配置截图、堡垒机/远程管理链路说明。
  • 高风险提示:三级系统远程管理时鉴别信息明文传输属高风险情形,见 22、高风险判定指引与加固对照表。
示例输出(节选)
mysql> show variables like 'require_secure_transport';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| require_secure_transport | ON    |
+--------------------------+-------+
mysql> show variables like 'ssl_cert';
+---------------+-------------------------------+
| Variable_name | Value                         |
+---------------+-------------------------------+
| ssl_cert      | /opt/app/mysql/server-cert.pem|
+---------------+-------------------------------+
mysql> show status like 'Ssl_cipher';
+---------------+--------------------+
| Variable_name | Value              |
+---------------+--------------------+
| Ssl_cipher    | ECDHE-RSA-AES128-GCM-SHA256 |
+---------------+--------------------+

D. 组合鉴别

show plugins;
  • 备注:MySQL 原生通常不直接实现双因素,现场应核查是否通过 PAM、堡垒机、数据库运维平台、MFA 平台等实现组合鉴别。
  • 预期证据:双因素登录界面截图、堡垒机认证策略截图、统一认证平台策略截图、访谈记录。
示例输出(节选)
mysql> show plugins;
+----------------------------+----------+--------------------+
| Name                       | Status   | Type               |
+----------------------------+----------+--------------------+
| caching_sha2_password      | ACTIVE   | AUTHENTICATION     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     |
| sha256_password            | ACTIVE   | AUTHENTICATION     |
| ...                        | ...      | ...                |
+----------------------------+----------+--------------------+

访问控制

  • 对应控制点:GB/T 22239-2019 8.1.4.2 访问控制(a 分配账户权限,b 默认账户,c 多余/过期账户,d 最小权限与权限分离,e 授权策略,f 授权粒度,g 安全标记)。
  • 判定要点:MySQL 无安全标记能力(g 一般判不符合或由上位措施说明);角色机制仅 8.0+,5.7 按账户直接授权取证;重点查 FILE/PROCESS/SUPER 等高危权限、host='%' 账户与多人共用 root。
  • 取证要求:mysql.user 及 db/tables_priv/columns_priv 授权表查询截图、SHOW GRANTS 输出、账号权限台账与审批记录。

A. 账户、角色、权限分配

select user, host, account_locked, password_expired from mysql.user;
show grants for 'root'@'localhost';
select * from information_schema.user_privileges;
select * from information_schema.schema_privileges;
select * from information_schema.table_privileges;
select * from information_schema.column_privileges;
  • 备注:重点核查高危权限、角色划分、管理员权限分离和多人共用 root 的情况。重点关注 ALL PRIVILEGES、GRANT OPTION、高权限业务账户。
  • 预期证据:高权限账户截图、授权结果截图、角色分工说明、账号权限审批记录。
示例输出(节选)
mysql> show grants for 'root'@'localhost';
+------------------------------------------------------------------+
| Grants for root@localhost                                        |
+------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` WITH GRANT OPTION |
+------------------------------------------------------------------+
mysql> select * from information_schema.schema_privileges limit 3;
+-------------+---------------+-------------------------+--------------+
| GRANTEE     | TABLE_CATALOG | TABLE_SCHEMA            | PRIVILEGE_TYPE|
+-------------+---------------+-------------------------+--------------+
| 'appuser'@'192.168.10.%' | def           | appdb        | SELECT       |
| 'appuser'@'192.168.10.%' | def           | appdb        | INSERT       |
| 'report'@'localhost'     | def           | appdb        | SELECT       |
+-------------+---------------+-------------------------+--------------+

B. 默认账户、多余账户、来源地址限制

select user, host from mysql.user order by user, host;
select user, host from mysql.user where user='' or user is null;   -- 5.7/8.0 初始化默认仅创建 root@localhost,无匿名账户;出现空账户多来自旧版本升级或手工创建
  • 备注:重点关注匿名账户、测试账户、过期账户和来源为 % 的账户,确认是否限制了管理来源地址。保留 root 时须确认已改默认口令、host 限定为 localhost 或管理网段。
  • 预期证据:用户来源地址截图、匿名账户核查结果截图、账号清理记录、来源地址控制策略截图。
  • 高风险提示:默认账户未改默认口令、匿名账户或共享账户属高风险情形,见 22、高风险判定指引与加固对照表。
示例输出(节选)
mysql> select user, host from mysql.user where user='' or user is null;
Empty set (0.00 sec)
mysql> select user, host from mysql.user;
+----------+--------------+
| user     | host         |
+----------+--------------+
| appuser  | 192.168.10.% |
| root     | localhost    |
+----------+--------------+

C. 细粒度授权与最小权限

select * from mysql.user\G
select * from mysql.db\G
select * from mysql.tables_priv\G
select * from mysql.columns_priv\G
  • 备注:重点抽查重要业务库、重要表、敏感字段的细粒度授权情况,确认是否按最小权限原则授权。
  • 预期证据:库级/表级/列级授权截图、重要业务账号权限抽查记录、权限申请审批记录。
示例输出(节选)
mysql> select user, host, db from mysql.db\G
*************************** 1. row ***************************
user: appuser
host: 192.168.10.%
  db: appdb
mysql> select user, host, db, table_name from mysql.tables_priv\G
*************************** 1. row ***************************
     user: report
     host: localhost
      db: appdb
table_name: t_order

D. 角色继承与特殊角色

select * from mysql.role_edges;        -- 仅 8.0+;5.7 无角色机制和该表,按账户直接授权取证
show grants for 'role_name';           -- host 省略默认 '%',建议写全 'role_name'@'%'
  • 备注:按实际角色名替换 role_name,重点说明角色继承链是否清晰、是否存在过度授权。5.7 无角色能力,需结合 SHOW GRANTS 逐账户取证。
  • 预期证据:角色继承关系截图、角色授权截图、角色设计说明。
示例输出(节选)
mysql> select * from mysql.role_edges;
+-----------+-----------+---------+---------+-------------------+
| FROM_HOST | FROM_USER | TO_HOST | TO_USER | WITH_ADMIN_OPTION |
+-----------+-----------+---------+---------+-------------------+
| %         | app_read  | localhost | appuser | N               |
| %         | app_write | localhost | appuser | N               |
+-----------+-----------+---------+---------+-------------------+
mysql> show grants for 'app_read';
+----------------------------------------------------+
| Grants for app_read@%                              |
+----------------------------------------------------+
| GRANT SELECT ON `appdb`.* TO `app_read`@`%`        |
+----------------------------------------------------+

安全审计

  • 对应控制点:GB/T 22239-2019 8.1.4.3 安全审计(启用审计并覆盖每个用户、记录要素、记录保护与定期备份、审计进程保护)。
  • 判定要点:社区版无原生审计,general_log 仅辅助且影响性能;有专用审计插件/企业版审计或第三方旁路审计判符合,仅 binlog/general_log 判部分符合,无任何审计措施判不符合;5.7/8.0 口径一致。
  • 取证要求:日志与审计参数、插件状态截图,审计记录样例(时间/用户/事件/成功失败标识),留存策略(不少于 6 个月)与保护措施说明。

A. 审计功能是否开启

show variables like 'log_error';
show variables like 'general_log';
show variables like 'slow_query_log';
show binary logs;
show plugins;
show variables like 'audit_log%';
  • 备注:重点核查是否启用可用于安全审计的日志或专用审计能力。普通日志可辅助核查,但更建议核查专用审计插件或第三方数据库审计。audit_log% 变量仅在企业版审计插件(或兼容插件)安装后出现,社区版返回空集属预期现象。
  • 预期证据:日志/审计参数截图、审计插件状态截图、第三方数据库审计界面截图。
  • 高风险提示:数据库无任何安全审计措施属高风险情形,见 22、高风险判定指引与加固对照表。
示例输出(节选)
mysql> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | OFF   |
+---------------+-------+
mysql> show variables like 'slow_query_log';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| slow_query_log      | ON    |
+---------------------+-------+
mysql> show variables like 'audit_log%';
Empty set (0.00 sec)

B. 审计范围与审计对象

show variables like 'log_output';
show variables like 'audit_log_policy';
show variables like 'audit_log_format';
  • 备注:重点看是否覆盖登录、权限变更、关键对象访问、失败操作等关键事件,是否满足安全审计取证要求。
  • 预期证据:审计策略截图、审计事件样例截图、审计对象范围说明。
示例输出(节选)
mysql> show variables like 'audit_log_policy';
Empty set (0.00 sec)
mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+

C. 审计日志保护与留存

show variables like 'log_error';
show variables like 'general_log_file';
show variables like 'slow_query_log_file';
show variables like 'log_bin_basename';
  • 备注:需结合操作系统侧核查日志目录权限、防篡改措施、集中存储和留存周期,一般还要关注是否定期备份。
  • 预期证据:日志路径截图、目录权限截图、日志留存策略、备份策略或日志平台截图。
示例输出(节选)
mysql> show variables like 'log_error';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| log_error     | /opt/app/mysql/log/error.log |
+---------------+------------------------------+
mysql> show variables like 'general_log_file';
+------------------+--------------------------------------+
| Variable_name    | Value                                |
+------------------+--------------------------------------+
| general_log_file | /opt/app/mysql/log/db01.log          |
+------------------+--------------------------------------+

D. 审计失效告警

  • 备注:通常需通过 systemd、监控平台、审计平台告警证明,现场可补查 systemctl status mysqld、日志采集进程状态和告警策略。
  • 预期证据:监控告警规则截图、告警消息样例、服务状态截图、运维告警平台截图。
systemctl status mysqld      # 数据库服务运行状态(服务名随发行版可能为 mysql)
systemctl is-enabled mysqld  # 开机自启状态,异常重启后审计是否自动恢复

数据完整性

  • 对应控制点:GB/T 22239-2019 8.1.4.7 数据完整性(a 传输过程、b 存储过程)。
  • 判定要点:传输完整性以 TLS 证据为准(Ssl_cipher 非空、require_secure_transport=ON);存储完整性 MySQL 无原生校验机制,需文件哈希基线比对、备份校验等第三方措施支撑,仅有数据库参数判部分符合。
  • 取证要求:SSL 状态与证书配置截图、配置文件/数据文件哈希比对记录、备份校验记录。

A. 传输过程完整性

show variables like 'require_secure_transport';
show status like 'Ssl_cipher';
  • 备注:使用 TLS/SSL 可作为传输完整性的重要证据,还应结合远程管理流程判断是否全链路生效。
  • 预期证据:SSL 参数截图、加密连接截图、网络传输加密说明。
示例输出(节选)
mysql> show variables like 'require_secure_transport';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| require_secure_transport | ON    |
+--------------------------+-------+
mysql> show status like 'Ssl_cipher';
+---------------+--------------------+
| Variable_name | Value              |
+---------------+--------------------+
| Ssl_cipher    | ECDHE-RSA-AES128-GCM-SHA256 |
+---------------+--------------------+

B. 存储过程完整性

select plugin_name, plugin_status from information_schema.plugins where plugin_type = 'AUTHENTICATION';   -- SHOW PLUGINS 不支持 WHERE 过滤(会报语法错误),改查 information_schema.plugins
select user, host, plugin from mysql.user;
  • 备注:重点说明鉴别数据、重要配置数据、审计数据是否具备防篡改或一致性保护措施。数据库原生命令往往不足以完全证明,需要结合备份、审计、文件权限和制度说明。
  • 预期证据:认证插件截图、配置文件权限截图、备份校验记录、制度或技术说明。
示例输出(节选)
mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_type = 'AUTHENTICATION';
+----------------------------+---------------+
| PLUGIN_NAME                | PLUGIN_STATUS |
+----------------------------+---------------+
| caching_sha2_password      | ACTIVE        |
| mysql_native_password      | ACTIVE        |
| sha256_password            | ACTIVE        |
+----------------------------+---------------+
mysql> select user, host, plugin from mysql.user;
+---------+--------------+-----------------------+
| user    | host         | plugin                |
+---------+--------------+-----------------------+
| appuser | 192.168.10.% | caching_sha2_password |
| root    | localhost    | caching_sha2_password |
+---------+--------------+-----------------------+

数据保密性

  • 对应控制点:GB/T 22239-2019 8.1.4.8 数据保密性(a 传输过程、b 存储过程)。
  • 判定要点:传输保密性看 TLS 是否强制(8.0.26+ 已无 have_ssl,用 Ssl_cipher/performance_schema 判断);鉴别数据 8.0 默认 caching_sha2_password,优于 5.7 mysql_native_password;业务数据 TDE/keyring 多为企业版能力,社区版需应用层或磁盘加密补充,仅靠认证插件判部分符合。
  • 取证要求:SSL/TLS 参数与账号 ssl_type 截图、加密方案与密钥管理说明、磁盘或应用层加密证明材料。

A. 传输过程保密性

show variables like 'require_secure_transport';
show status like 'Ssl_cipher';
  • 备注:应证明数据库管理连接、重要业务连接在传输过程中采用了密码技术保护。
  • 预期证据:SSL/TLS 参数截图、客户端加密连接截图、远程运维链路说明。
示例输出(节选)
mysql> show variables like 'require_secure_transport';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| require_secure_transport | ON    |
+--------------------------+-------+
mysql> show status like 'Ssl_cipher';
+---------------+--------------------+
| Variable_name | Value              |
+---------------+--------------------+
| Ssl_cipher    | ECDHE-RSA-AES128-GCM-SHA256 |
+---------------+--------------------+

B. 存储过程保密性

select plugin_name, plugin_status from information_schema.plugins where plugin_type = 'AUTHENTICATION';   -- SHOW PLUGINS 不支持 WHERE 过滤(会报语法错误),改查 information_schema.plugins
select user, host, plugin from mysql.user;
  • 备注:重点说明鉴别数据是否避免明文存储,以及重要业务数据、个人信息是否通过 TDE、磁盘加密、应用层加密或第三方方案实现静态保护。
  • 预期证据:认证插件截图、加密方案说明、磁盘加密截图、应用加密设计或制度材料。
示例输出(节选)
mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_type = 'AUTHENTICATION';
+----------------------------+---------------+
| PLUGIN_NAME                | PLUGIN_STATUS |
+----------------------------+---------------+
| caching_sha2_password      | ACTIVE        |
| mysql_native_password      | ACTIVE        |
| sha256_password            | ACTIVE        |
+----------------------------+---------------+
mysql> select user, host, plugin from mysql.user;
+---------+--------------+-----------------------+
| user    | host         | plugin                |
+---------+--------------+-----------------------+
| appuser | 192.168.10.% | caching_sha2_password |
| root    | localhost    | caching_sha2_password |
+---------+--------------+-----------------------+

备份恢复

  • 对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复(a 本地备份与恢复,b 异地实时备份,c 热冗余)。
  • 判定要点:binlog 开启仅代表具备恢复能力(8.0 默认开启、5.7 默认关闭),须以备份策略与恢复演练记录定论;异地实时备份须证明复制节点在异地;单点部署且无高可用判不符合。
  • 取证要求:备份策略/任务/备份文件清单、恢复演练记录、复制状态截图与异地机房说明、高可用架构图。

A. 本地数据备份与恢复

show variables like 'log_bin';                    -- 8.0 默认 ON;5.7 未配置 log-bin 时默认 OFF
show variables like 'binlog_expire_logs_seconds'; -- 8.0+:binlog 保留秒数,默认 2592000(30 天)
show variables like 'expire_logs_days';           -- 5.7:按天保留,默认 0(不自动清理);8.0 起弃用,改用上一条
show binary log status;                           -- 8.4+ 写法:当前 binlog 文件与位点
show master status;                               -- 8.3 及以前有效;8.4 已移除,改用上一条
mysqldump -h127.0.0.1 -uroot -p --single-transaction --routines --triggers --all-databases > full_backup_$(date +%F).sql
# 记录 binlog 坐标:8.0.26 及以上用 --source-data=2;5.7 与 8.0.25 及之前用 --master-data=2(后者 8.0 起已标记弃用)
  • 备注:二进制日志开启有利于恢复,但不等于已落实完整备份策略。应结合备份脚本、计划任务、binlog/备份文件保留期和恢复演练记录综合判断。
  • 预期证据:备份任务截图、备份脚本、备份结果截图、恢复演练记录。
  • 高风险提示:重要数据无本地备份、有备份但从未验证恢复属高风险情形,见 22、高风险判定指引与加固对照表。
示例输出(节选)
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| binlog.000123    |    45678 |              |                  |
+------------------+----------+--------------+------------------+

B. 异地实时备份

show replica status;
show slave status\G
  • 备注:主从复制、组复制、MGR、Galera 等可作为异地实时备份的支撑证据,但仍需证明备份节点位于异地。
  • 预期证据:复制状态截图、备机信息截图、异地机房说明、网络拓扑图。
示例输出(节选)
mysql> show replica status\G
*************************** 1. row ***************************
             Replica_IO_Running: Yes
            Replica_SQL_Running: Yes
              Source_Host: 192.168.10.21
              Source_Port: 3306
        Seconds_Behind_Source: 0
mysql> show slave status\G
(5.7 输出字段为 Slave_IO_Running / Slave_SQL_Running / Seconds_Behind_Master)

C. 热冗余与高可用

show status like 'group_replication%';
show status like 'wsrep%';
  • 备注:重点确认是否具备热冗余、高可用切换和故障恢复能力,并关注是否开展过演练。
  • 预期证据:高可用架构图、切换状态截图、故障切换演练记录。
示例输出(节选)
mysql> show status like 'group_replication%';
+----------------------------------+-------+
| Variable_name                    | Value |
+----------------------------------+-------+
| group_replication_primary_member | xxx…  |
+----------------------------------+-------+
mysql> show status like 'wsrep%';
Empty set (0.00 sec)

剩余信息保护

  • 对应控制点:GB/T 22239-2019 8.1.4.10 剩余信息保护。
  • 判定要点:MySQL 无直接核查命令,依据介质/云盘释放清除策略与销毁记录判定;仅删账户/表而无日志、备份残留清理判部分符合。
  • 取证要求:介质清除与销毁制度文件、云平台磁盘回收策略截图、销毁记录。

A. 鉴别信息所在存储空间释放前清除

  • 备注:MySQL 无明显独立控制项直接证明,需结合存储介质清除制度、虚拟磁盘回收策略、云盘释放策略、销毁记录综合判定。

  • 预期证据:介质清除制度、云平台磁盘释放策略、存储回收说明、销毁记录。

B. 敏感数据所在存储空间释放前清除

  • 备注:需结合磁盘加密、虚拟化回收策略、介质销毁记录判定敏感数据残留风险控制情况。

  • 预期证据:磁盘加密截图、销毁记录、设备回收制度、存储平台策略截图。

个人信息保护

  • 对应控制点:GB/T 22239-2019 8.1.4.11 个人信息保护。
  • 判定要点:不存储个人信息判不适用(须访谈并留存边界说明);涉及时核查敏感字段授权、脱敏、导出控制与审计留痕。
  • 取证要求:个人信息字段清单、字段级授权与审计截图、脱敏与分类分级材料。

A. 个人信息访问控制与审计

  • 备注:若业务涉及个人信息,应抽查敏感字段访问权限、导出控制、审计留痕和最小权限落实情况。

  • 预期证据:敏感字段权限截图、导出审计截图、账号职责分工说明。

B. 个人信息存储与传输保护

  • 备注:抽查脱敏、加密、专门审计、分类分级等保护措施,不宜仅凭数据库参数单独下结论。

  • 预期证据:脱敏规则截图、加密设计说明、分类分级文件、系统设计材料。

入侵防范

  • 对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范(a 最小安装,b 服务与端口,c 管理终端限制,e 漏洞发现与修补);D 项对应 8.1.4.5 恶意代码防范。
  • 判定要点:最小安装、恶意代码防范由宿主 OS 侧测评取证;账号 host='%' 且无网络层限制判不符合;存在未修复高危漏洞判不符合并按高风险处理。
  • 取证要求:host 列与监听配置截图、防火墙/堡垒机策略截图、漏洞扫描报告与补丁记录、EDR/防护软件界面截图。

A. 访问来源限制/白名单

  • 备注:结合数据库监听/配置与防火墙策略,确认仅允许授权来源访问。

  • 预期证据:数据库访问控制或监听配置截图、主机/网络防火墙策略、堡垒机访问策略截图。

B. 异常访问与爆破防护

  • 备注:结合登录失败处理、连接限制、WAF/堡垒机/防暴力破解策略,确认具备阻断或告警能力。

  • 预期证据:失败登录限制参数截图、策略截图、告警样例、访谈记录。

C. 漏洞扫描与补丁管理

  • 备注:确认数据库漏洞扫描周期、补丁评估与修复流程。

  • 预期证据:漏洞扫描报告、补丁更新记录、变更单。

D. 恶意代码/工具防护

  • 备注:确认主机侧安全防护软件或EDR对数据库进程的防护与告警能力。

  • 预期证据:安全软件截图、策略配置截图、告警样例。

时间同步与日志一致性

  • 对应控制点:GB/T 22239-2019 8.1.5.4 安全管理中心·集中管控(时钟同步),并支撑 8.1.4.3 安全审计记录的时间可溯源。
  • 判定要点:服务器与统一时钟源正常同步(NTP/chrony 服务 active、偏差可接受)判符合,未同步或偏差大判不符合。
  • 取证要求:chronyc tracking/NTP 配置截图、时钟源说明、巡检记录。
chronyc tracking   # chrony 同步状态(或 ntpstat、ntpq -p)
timedatectl        # 查看 System clock synchronized / NTP service 状态
  • 备注:确认数据库服务器时间同步(NTP/chrony),保证审计日志时间一致、可溯源。

  • 预期证据:NTP/chrony 配置截图、时间同步状态截图、运维制度或巡检记录。

主流版本差异说明

MySQL主流版本核查差异说明

版本识别

select version();
show variables like 'version%';

说明:现场先确认是 5.7、8.0 还是 8.4,再选用对应命令。

主流版本分档

  1. MySQL 5.7

  2. MySQL 8.0

  3. MySQL 8.4

重点差异

A. 身份鉴别

  1. 5.7 常见认证插件:mysql_native_password

  2. 8.0 默认常见认证插件:caching_sha2_password

  3. 8.4 延续 8.0 思路,但现场更应优先核查组件和安全默认项

推荐命令:

select user, host, plugin from mysql.user;
show variables like 'validate_password%';

兼容提示:

  1. 若 validate_password 查询不到,补查是否使用组件、PAM、AD、堡垒机或统一认证。

  2. 5.7 现场遗留脚本常用 Password 字段,实际应优先查看 authentication_string 与插件类型。

B. 访问控制

  1. 5.7 角色能力弱于 8.0

  2. 8.0/8.4 可优先核查 mysql.role_edges

推荐命令:

show grants for 'user'@'host';
select * from information_schema.user_privileges;
select * from information_schema.schema_privileges;
select * from information_schema.table_privileges;

8.0/8.4 增补:

select * from mysql.role_edges;

兼容提示:

  1. 若 5.7 没有角色设计,需按账户直接授权方式取证。

C. 安全审计

  1. 5.7/8.0/8.4 都要区分普通日志与真正审计能力

  2. 企业版或第三方审计更常见

推荐命令:

show variables like 'general_log';
show variables like 'log_error';
show variables like 'audit_log%';
show plugins;

D. 备份恢复与高可用

  1. 5.7 常见命令:show slave status\G

  2. 8.0 开始逐步引入 replica/source 新术语

  3. 现场兼容性最稳妥写法仍建议同时准备旧新两套命令

推荐命令:

show binary log status;    -- 8.4+
show master status;        -- 8.3 及以前(8.4 已移除)
show replica status\G      -- 8.0.22+
show slave status\G        -- 8.0.21 及以前(8.0.22 起弃用)
show status like 'group_replication%';

现场编制建议

  1. MySQL 5.7 现场重点关注:老旧认证方式、审计能力不足、角色设计不完善。

  2. MySQL 8.0 现场重点关注:角色、认证插件、强制加密传输、高可用状态。

  3. MySQL 8.4 现场重点关注:与 8.0 基本一致,但注意新默认项和组件化差异。

取证注意事项

  1. 旧版命令里出现 Password 字段时,不要直接照抄,应先确认当前版本字段是否仍可用。

  2. 复制命令优先同时准备 slave 和 replica 两套写法。

  3. 若现场是云数据库或托管版,很多 OS 侧证据要改由控制台或运维平台取证。

参考依据

  • GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》8.1.4 安全计算环境:openstd.samr.gov.cn 标准页
  • GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》:openstd.samr.gov.cn 标准页
  • MySQL 8.0 Reference Manual — Grant Tables:mysql.user 字段(authentication_string/password_lifetime/account_locked)、role_edges 等授权表
  • MySQL 8.0 Reference Manual — The Password Validation Component:组件点分变量 validate_password.xxx 与 5.7 插件下划线变量差异
  • MySQL 8.0 Reference Manual — Connection Control Plugin Variables:失败连接阈值与延迟变量及默认值
  • MySQL 8.0 Reference Manual — Password Management:default_password_lifetime 默认 0(永不过期)
  • MySQL 8.0 Reference Manual — Binary Log Options and Variables:binlog_expire_logs_seconds/expire_logs_days、8.0 起 log_bin 默认开启
  • MySQL 8.0 Reference Manual — SHOW REPLICA STATUS Statement:8.0.22 起 REPLICA 术语、SHOW SLAVE STATUS 同版弃用
  • MySQL 8.0 Reference Manual — mysqldump:--master-data 弃用、--source-data 自 8.0.26 起可用
  • MySQL 8.4 Reference Manual — SHOW BINARY LOG STATUS Statement:8.4 起 SHOW MASTER STATUS 不再支持
  • 《网络安全等级保护测评高风险判定指引》(联盟团标):现场高风险项判定口径
  • 命令核验说明:本文 SQL/命令已于 2026-09 对照 MySQL 官方文档核验,5.7/8.0 差异处已标注,现场以实际版本为准。

关联文章