Linux MariaDB 安全配置清单
一 基础加固
sudo mysql_secure_installation。完成后务必重启服务:sudo systemctl restart mariadb(或 mysql)。[mysqld] 中加入 bind-address = 127.0.0.1;如需远程仅开放到管理网段,改为指定内网地址。[mysqld] 中设置 local-infile=0,降低通过 LOAD DATA LOCAL INFILE 读取服务器文件的风险。secure_file_priv=/var/lib/mysql/import(示例路径),仅允许在该目录进行导入导出,避免任意路径读写。二 用户与权限最小化
CREATE DATABASE app_db;CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPass!23';GRANT SELECT,INSERT,UPDATE,DELETE ON app_db.* TO 'app_user'@'localhost';FLUSH PRIVILEGES;FILE、PROCESS、SUPER 等权限;示例:REVOKE FILE,PROCESS,SUPER ON *.* FROM 'user';root@localhost 调整为 root@'192.168.1.0/255.255.255.0'(按需设置)。三 加密传输与静态加密
file_key_management 插件并配置密钥文件(如 /etc/mysql/keyring/encryption.key),确保密钥文件权限 600 且仅 mysql 可读。--ssl-ca、--ssl-cert、--ssl-key,并在服务器端设置 require_secure_transport=ON(或按用户/库粒度要求加密)。四 审计与日志
[mysqld] 中加载 server_audit 并设置日志路径与滚动策略,例如:
plugin_load_add = server_auditserver_audit_logging = ONserver_audit_output_type = FILEserver_audit_file_path = /var/log/mysql/server_audit.logserver_audit_file_rotate_size = 1Gserver_audit_file_rotations = 10SHOW GLOBAL VARIABLES LIKE 'server_audit%';,并检查日志文件是否生成。五 维护与合规
validate_password),设置长度、字符集与过期策略;定期轮换关键账户密码。local_infile:SHOW VARIABLES LIKE 'local_infile';(配置 local-infile=0)secure_file_priv:SHOW VARIABLES LIKE 'secure_file_priv';(设置为固定目录)SELECT user,host FROM mysql.user WHERE File_priv='Y' OR Process_priv='Y' OR Super_priv='Y';SHOW VARIABLES LIKE 'datadir';(确保目录权限 700)ps -ef | egrep "^mysql.*$"(确认非 root 运行)cat /dev/null > ~/.mysql_history 或 ln -s /dev/null ~/.mysql_historysudo systemctl restart mariadb 使配置生效。