152 lines
6.2 KiB
SQL
152 lines
6.2 KiB
SQL
-- ============================================
|
||
-- 审计字段迁移:创建人/更新人 + 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;
|