01-MySQL测评命令
Categories:
10 分钟阅读
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、高风险判定指引与加固对照表。
下列安装语句会修改服务器状态、影响后续口令修改行为,现场测评只做查询核对;确需安装应走变更审批并在业务低峰执行:
INSTALL COMPONENT 'file://component_validate_password';(8.0 组件,推荐)或 INSTALL PLUGIN validate_password SONAME 'validate_password.so';(5.7 插件;8.0 中仍可用但已弃用)。
示例输出(节选)
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.7mysql_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,再选用对应命令。
主流版本分档
MySQL 5.7
MySQL 8.0
MySQL 8.4
重点差异
A. 身份鉴别
5.7 常见认证插件:
mysql_native_password8.0 默认常见认证插件:
caching_sha2_password8.4 延续 8.0 思路,但现场更应优先核查组件和安全默认项
推荐命令:
select user, host, plugin from mysql.user;
show variables like 'validate_password%';
兼容提示:
若
validate_password查询不到,补查是否使用组件、PAM、AD、堡垒机或统一认证。5.7 现场遗留脚本常用
Password字段,实际应优先查看authentication_string与插件类型。
B. 访问控制
5.7 角色能力弱于 8.0
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;
兼容提示:
- 若 5.7 没有角色设计,需按账户直接授权方式取证。
C. 安全审计
5.7/8.0/8.4 都要区分普通日志与真正审计能力
企业版或第三方审计更常见
推荐命令:
show variables like 'general_log';
show variables like 'log_error';
show variables like 'audit_log%';
show plugins;
D. 备份恢复与高可用
5.7 常见命令:
show slave status\G8.0 开始逐步引入
replica/source新术语现场兼容性最稳妥写法仍建议同时准备旧新两套命令
推荐命令:
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%';
现场编制建议
MySQL 5.7 现场重点关注:老旧认证方式、审计能力不足、角色设计不完善。
MySQL 8.0 现场重点关注:角色、认证插件、强制加密传输、高可用状态。
MySQL 8.4 现场重点关注:与 8.0 基本一致,但注意新默认项和组件化差异。
取证注意事项
旧版命令里出现
Password字段时,不要直接照抄,应先确认当前版本字段是否仍可用。复制命令优先同时准备
slave和replica两套写法。若现场是云数据库或托管版,很多 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 差异处已标注,现场以实际版本为准。
关联文章
- 配套加固:12、MySQL数据库加固
- 取证记录:16、安全评估加固记录表3.0
- 高风险口径:22、高风险判定指引与加固对照表