標籤:管理員 ali ase 就是 時間 檔案中 mysql資料庫 sel pre
1. 禁止MySql以管理員帳號許可權運行
MySql應該使用非管理員帳號運行,以普通賬戶安全運行mysqld
加固方法:在my.cnf設定檔中配置user=mysql
2. 設定root使用者口令並修改登入名稱,且不存在空密碼賬戶
> set password for 'root'@'localhost'=password('new_password');#實際操作中,只需將上面new_password換成實際的口令即可
> use mysql;> update user set user="another_username" where user="root";> flush privileges;
然後,可用通過$ mysql -u another_username -p 訪問mysql控制台了。
> select * from mysql.user where user="";
3. 配置合適的密碼強度,最長使用到期日小於90天
加固方法:添加以下配置行到全域配置
plugin-load = validate_password.so #載入密碼強度驗證外掛程式validate_password_length = 14 #密碼長度最小為14,預設為8 validate_password_mixed_case_count = 1 #至少包含的小寫字母個數和大寫字母個數validate_password_number_count = 1 #至少包含的數字個數validate_password_special_char_count = 1 #至少包含的特殊字元個數validate_password_policy = MEDIUM #密碼強度等級,有三種:0/LOW、1/MEDIUM、2/STRONG,預設為MEDIUM
關於密碼強度的三種等級,要求如下:
Policy Tests Performed0 or LOW Length1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
> set global default_password_lifetime=90;
4. 降低使用者的資料庫特權,只有管理員有完整的資料庫存取權限
加固方法:審計每項特權授予的使用者,對於非系統管理使用者,使用revoke語句來適當刪除許可權。
# mysql.user表中的特權有:file_priv:表示是否允許使用者讀取資料庫所在主機的本地檔案;Process:表示是否允許使用者查詢所有使用者的命令執行資訊;Super_priv:表示使用者是否有設定全域變數,管理員調試等進階別許可權;Shutdown_priv:表示使用者是否可以關閉資料庫;Create_user_priv:表示使用者是否可以建立或刪除其他使用者;Grant_priv:表示使用者是否可以修改其他使用者權限
查詢正在執行的sql語句:
> show processlist;# 或者> use information_schema;> select * from PROCESSLIST where info is not null;
使用如下命令查看擁有對應許可權的資料庫帳號:
select host,user from mysql.user where File_priv='Y';
如果存在非管理使用者,使用如下命令進行許可權回收:
revoke file on *.* from 'mysql';
5. 禁止或限制遠端存取,確保特定主機才擁有存取權限
> grant all on *.* to 'root'@'%';
> grant all on *.* to 'root'@'localhost';> grant all on *.* to 'root'@'hostname_ip'; #可以是ip或者主機名稱
如果,要取消在某台主機上的存取權限,可以採用:
> revoke all on *.* from 'root'@'hostname_ip';
如果,只授權部分許可權,可以採用:
> grant select on mydb.* to 'someuser'@'hostname_ip';
6. 配置MySql日誌便於審計
mysql系統安全管理與最佳化