Files
nginxserver/sql/audit_migration.sql
2026-07-16 13:03:11 +08:00

152 lines
6.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================
-- 审计字段迁移:创建人/更新人 + DNS记录本地审计表
-- 数据库: nginxserver @ 10.1.1.122:3306
-- 日期: 2026-06-19
-- 执行方式: mysql -h 10.1.1.122 -u nginxserver -p nginxserver < audit_migration.sql
-- ============================================
USE nginxserver;
-- ════════════════════════════════════════════════
-- 安全添加审计列(检查是否已存在,避免重复执行报错)
-- ════════════════════════════════════════════════
DROP PROCEDURE IF EXISTS add_audit_columns;
DELIMITER $$
CREATE PROCEDURE add_audit_columns()
BEGIN
-- ========================================
-- forwarding_rules: created_by
-- ========================================
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'forwarding_rules'
AND COLUMN_NAME = 'created_by'
) THEN
ALTER TABLE forwarding_rules
ADD COLUMN created_by VARCHAR(100) DEFAULT NULL
COMMENT '创建人';
END IF;
-- forwarding_rules: updated_by
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'forwarding_rules'
AND COLUMN_NAME = 'updated_by'
) THEN
ALTER TABLE forwarding_rules
ADD COLUMN updated_by VARCHAR(100) DEFAULT NULL
COMMENT '更新人';
END IF;
-- ========================================
-- dns_zone_config: created_by
-- ========================================
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'dns_zone_config'
AND COLUMN_NAME = 'created_by'
) THEN
ALTER TABLE dns_zone_config
ADD COLUMN created_by VARCHAR(100) DEFAULT NULL
COMMENT '创建人';
END IF;
-- dns_zone_config: updated_by
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'dns_zone_config'
AND COLUMN_NAME = 'updated_by'
) THEN
ALTER TABLE dns_zone_config
ADD COLUMN updated_by VARCHAR(100) DEFAULT NULL
COMMENT '更新人';
END IF;
-- ========================================
-- certificates: created_by
-- ========================================
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'certificates'
AND COLUMN_NAME = 'created_by'
) THEN
ALTER TABLE certificates
ADD COLUMN created_by VARCHAR(100) DEFAULT NULL
COMMENT '创建人';
END IF;
-- certificates: updated_by
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'certificates'
AND COLUMN_NAME = 'updated_by'
) THEN
ALTER TABLE certificates
ADD COLUMN updated_by VARCHAR(100) DEFAULT NULL
COMMENT '更新人';
END IF;
END$$
DELIMITER ;
-- 执行存储过程
CALL add_audit_columns();
-- 清理
DROP PROCEDURE IF EXISTS add_audit_columns;
-- ════════════════════════════════════════════════
-- 新建 DNS 记录本地审计表
-- ════════════════════════════════════════════════
CREATE TABLE IF NOT EXISTS dns_records (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
record_id VARCHAR(128) NOT NULL COMMENT '阿里云解析记录ID',
domain_zone VARCHAR(255) NOT NULL COMMENT '主域名(如 zgitm.com',
rr VARCHAR(255) NOT NULL COMMENT '主机记录',
record_type VARCHAR(20) NOT NULL COMMENT '记录类型: A / CNAME / TXT',
record_value VARCHAR(500) NOT NULL COMMENT '记录值IP 或域名)',
ttl INT DEFAULT 600 COMMENT 'TTL 生效时间(秒)',
status TINYINT DEFAULT 1 COMMENT '状态: 0-已删除(逻辑删除), 1-正常',
created_by VARCHAR(100) DEFAULT NULL COMMENT '创建人',
updated_by VARCHAR(100) DEFAULT NULL COMMENT '更新人',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
UNIQUE KEY uk_record_id (record_id),
INDEX idx_domain_zone (domain_zone),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='DNS解析记录本地审计表阿里云为权威数据源本表仅做审计追踪';
-- ════════════════════════════════════════════════
-- 验证结果
-- ════════════════════════════════════════════════
SELECT '=== forwarding_rules 审计列 ===' AS '';
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'forwarding_rules'
AND COLUMN_NAME IN ('created_by', 'updated_by');
SELECT '=== dns_zone_config 审计列 ===' AS '';
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'dns_zone_config'
AND COLUMN_NAME IN ('created_by', 'updated_by');
SELECT '=== certificates 审计列 ===' AS '';
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'nginxserver'
AND TABLE_NAME = 'certificates'
AND COLUMN_NAME IN ('created_by', 'updated_by');
SELECT '=== dns_records 表结构 ===' AS '';
SHOW CREATE TABLE dns_records;