資料庫管理人員可以參考本文檔進行 MySQL 資料庫系統的安全配置加強,提高資料庫的安全性,確定資料庫服務穩定、安全、可靠地運作。
1.禁止 Mysql 以管理者帳号權限運作
以普通帳戶安全運作 mysqld,禁止以管理者帳号權限運作 MySQL 服務。在 /etc/my.cnf 配置檔案中進行以下設定。[mysql.server]
user=mysql
2.避免不同使用者間共享帳号
參考以下步驟。
a.建立使用者。mysql> mysql> insert into
mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub
ject) values("localhost","pppadmin",password("passwd"),'','','');
執行以上指令可以建立一個 phplamp 使用者。
b.使用該使用者登入 MySQL 服務。mysql>exit;
@>mysql -u phplamp -p
@>輸入密碼
mysql>登入成功
3.删除無關帳号
DROP USER 語句可用于删除一個或多個 MySQL 賬戶。使用 DROP USER 指令時,必須確定目前賬号擁有 MySQL 資料庫的全局 CREATE USER 權限或 DELETE 權限。賬戶名稱的使用者和主機部分分别與使用者表記錄的 User 和 Host 列值相對應。
執行DROP USER user;語句,您可以取消一個賬戶和其權限,并删除來自所有授權表的帳戶權限記錄。
4.密碼
檢查賬戶預設密碼和弱密碼。密碼長度需要至少八位,并包括數字、小寫字母、大寫字母和特殊符号四類中的至少兩種類型,且五次以内不得設定相同的密碼。密碼應至少每 90 天進行一次更換。
您可以通過執行以下指令修改密碼。mysql> update user set password=password('test!p3') where user='root';
mysql> flush privileges;
5.授權
在資料庫權限配置能力範圍内,根據使用者的業務需要,配置其所需的最小權限。
檢視資料庫授權情況。mysql> use mysql;
mysql> select * from user;
mysql>select * from db;
mysql>select * from host;
mysql>select * from tables_priv;
mysql>select * from columns_priv;
通過 revoke 指令回收不必要的或危險的授權。mysql> help revoke
Name: 'REVOKE'
Description:
Syntax:
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type]
{
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
}
FROM user [, user] ...
6.開啟日志審計功能
資料庫應配置日志功能,便于記錄運作狀況和操作行為。
MySQL服務有以下幾種日志類型:
錯誤日志: -log-err
查詢日志: -log (可選)
慢查詢日志: -log-slow-queries (可選)
更新日志: -log-update
二進制日志: -log-bin
找到 MySQL 的安裝目錄,在 my.ini 配置檔案中增加上述所需的日志類型參數,儲存配置檔案後,重新開機 MySQL 服務即可啟用日志功能。例如,
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=
#Enter a name for the query log file. Otherwise a default name will be used.
#log=
#Enter a name for the error log file. Otherwise a default name will be used.
log-error=
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=
該參數中啟用錯誤日志。如果您需要啟用其他的日志,隻需把對應參數前面的 “#” 删除即可。
日志查詢操作說明
執行show variables like 'log_%';指令可檢視所有的 log。
執行show variables like 'log_bin';指令可檢視具體的 log。
7.安裝最新更新檔
確定系統安裝了最新的安全更新檔。
注意: 在保證業務及網絡安全的前提下,并經過相容性測試後,安裝更新更新檔。
8.如果不需要,應禁止遠端通路
禁止網絡連接配接,防止猜解密碼攻擊、溢出攻擊、和嗅探攻擊。
注意: 僅限于應用和資料庫在同一台主機的情況。
如果資料庫不需要遠端通路,可以禁止遠端 TCP/IP 連接配接,通過在 MySQL 伺服器的啟動參數中添加--skip-networking參數使 MySQL 服務不監聽任何 TCP/IP 連接配接,增加安全性。
建議不要将資料庫高危服務對網際網路開放。
9.設定可信 IP 通路控制
通過資料庫所在作業系統的防火牆限制,實作隻有信任的 IP 才能通過監聽器通路資料庫。mysql> GRANT ALL PRIVILEGES ON db.*
·-> -> TO 使用者名@'IP子網/掩碼';
10.連接配接數設定
根據您的機器性能和業務需求,設定最大、最小連接配接數。
在 MySQL 配置檔案(my.conf 或 my.ini)的 [mysqld] 配置段中添加max_connections = 1000,儲存配置檔案,重新開機 MySQL 服務後即可生效。