一、配置口令復雜度策略
show variables like 'plugin_dir';
show plugins;
安裝密碼插件
install plugin validate_password soname 'validate_password.so';
密碼策略參數(shù)
mysql>show variables like 'validate%';
#永久生效
[mysqld]
plugin-load-add=validate_password.so
#服務器在啟動時加載插件唉窃,并防止在服務器運行時刪除插件耙饰。
validate-password=FORCE_PLUS_PERMANENT
卸載插件
uninstall plugin connection_control_failed_login_attempts
二、配置口令有效期策略
mysql
alter user 'root'@'%' password expire interval 90 day;
三纹份、配置登錄失敗處理及連接超時自動退出策略
#登錄錯誤次數(shù)限制插件
install plugin connection_control soname "connection_control.so";
#為了把錯誤次數(shù)記錄到表中
install plugin connection_control_failed_login_attempts soname 'connection_control.so';
#設置策略
set global connection_control_failed_connections_threshold = 5;
set global connection_control_max_connection_delay = 1800000;
set global connection_control_min_connection_delay = 1800000;
#永久生效
[mysqld]
plugin-load-add = connection_control.so
connection-control = FORCE
connection-control-failed-login-attempts = FORCE
connection_control_min_connection_delay = 1000
connection_control_max_connection_delay = 86400
connection_control_failed_connections_threshold = 3
三苟跪、開啟安全審計行為
建議數(shù)據(jù)庫開啟安全審計,對操作行為進行審計蔓涧、對日志進行保護件已,定期進行備份,保存6個月以上元暴。
show variables like 'general%'; -- 查看日志是否開啟
show variables like 'log_output'; -- 看看日志輸出類型 table或file
set global general_log=on; -- 開啟日志功能
set global general_log_file='tmp/general.lg'; -- 設置日志文件保存位置
set global log_output='file'; -- 設置輸出類型為file
#永久生效
[mysqld]
general-log=1
#日志切割設置篷扩,利用logrote實現(xiàn)一天一個壓縮日志。
cp support-files/mysql-log-rotate /etc/logrotate.d/
vim /etc/logrotate.d/mysql-log-rotate
chmod 644 /etc/logrotate.d/mysql-log-rotate
logrotate -f /etc/logrotate.conf
四茉盏、配備網(wǎng)絡管理員鉴未,安全管理員
MySQL可以通過創(chuàng)建不同的用戶和角色來配備網(wǎng)絡管理員和安全管理員枢冤。
- 創(chuàng)建網(wǎng)絡管理員用戶
可以使用以下命令創(chuàng)建一個具有網(wǎng)絡管理員權限的用戶:
CREATE USER 'netadmin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'netadmin'@'localhost';
這將創(chuàng)建一個名為“netadmin”的用戶,并授予該用戶在所有數(shù)據(jù)庫和表上執(zhí)行任何操作的權限铜秆。
- 創(chuàng)建安全管理員用戶
可以使用以下命令創(chuàng)建一個具有安全管理員權限的用戶:
CREATE USER 'secadmin'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mysql.* TO 'secadmin'@'localhost';
這將創(chuàng)建一個名為“secadmin”的用戶淹真,并授予該用戶在MySQL系統(tǒng)數(shù)據(jù)庫上執(zhí)行SELECT、INSERT羽峰、UPDATE和DELETE操作的權限趟咆。
- 創(chuàng)建角色
除了創(chuàng)建用戶,還可以創(chuàng)建角色來分配權限梅屉≈瞪矗可以使用以下命令創(chuàng)建一個名為“netadmin_role”的角色,并將其授予在所有數(shù)據(jù)庫和表上執(zhí)行任何操作的權限:
CREATE ROLE 'netadmin_role';
GRANT ALL PRIVILEGES ON *.* TO 'netadmin_role';
然后坯汤,可以將“netadmin”用戶添加到“netadmin_role”角色中:
GRANT 'netadmin_role' TO 'netadmin'@'localhost';
這將使“netadmin”用戶繼承“netadmin_role”的所有權限虐唠。
類似地,可以創(chuàng)建一個名為“secadmin_role”的角色惰聂,并將其授予在MySQL系統(tǒng)數(shù)據(jù)庫上執(zhí)行SELECT疆偿、INSERT、UPDATE和DELETE操作的權限:
CREATE ROLE 'secadmin_role';
GRANT SELECT, INSERT, UPDATE, DELETE ON mysql.* TO 'secadmin_role';
然后搓幌,可以將“secadmin”用戶添加到“secadmin_role”角色中:
GRANT 'secadmin_role' TO 'secadmin'@'localhost';
這將使“secadmin”用戶繼承“secadmin_role”的所有權限杆故。