禁用local_infile選項會下降攻擊者經過SQL注入漏洞器讀取敏感文件的能力mysql
編輯Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置local-infile參數爲0,並重啓mysql服務: ``` local-infile=0 ```
測試數據庫可供全部用戶訪問,並可用於消耗系統資源。刪除測試數據庫將減小mysql服務器的攻擊面。sql
登錄數據庫執行如下SQL語句刪除test數據庫: ``` DROP DATABASE test; flush privileges; ```
避免在主機名中只使用通配符,有助於限定能夠鏈接數據庫的客戶端,不然服務就開放到了公網數據庫
執行SQL更新語句,爲每一個用戶指定容許鏈接的host範圍。 1. 登陸數據庫,執行`use mysql;` ; 2. 執行語句`select user,Host from user where Host='%';`查看HOST爲通配符的用戶; 3. 刪除用戶或者修改用戶host字段,刪除語句:`DROP USER 'user_name'@'%';` 。更新語句:`update user set host = <new_host> where host = '%';`。 4. 執行SQL語句: ``` OPTIMIZE TABLE user; flush privileges; ```
禁用符號連接以防止各類安全風險安全
編輯Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置`symbolic-links=0`,5.6及以上版本應該配置爲`skip_symbolic_links=yes`,並重啓mysql服務。
避免使用熟知的端口,下降被初級掃描的風險服務器
編輯/etc/my.cnf文件,[mysqld] 段落中配置新的端口參數,並重啓mysql服務: ``` port=3506 ```
使用最低權限賬戶運行服務可減少MySQL天生漏洞的影響。受限賬戶將沒法訪問與MySQL無關的資源,例如操做系統配置。測試
使用非root和非sudo權限用戶啓動Mysql服務
使用此選項,會致使全部客戶端都對全部數據庫具備不受限制的訪問權限。spa
編輯Mysql配置文件/etc/my.cnf,刪除skip-grant-tables參數,並重啓mysql服務
啓用錯誤日誌能夠提升檢測針對mysql和其餘關鍵消息的惡意嘗試的能力,例如,若是錯誤日誌未啓用,則鏈接錯誤可能會被忽略。操作系統
編輯Mysql配置文件/etc/my.cnf,在[mysqld_safe] 段落中配置log-error參數,<log_path>表明存放日誌文件路徑,如:/var/log/mysqld.log,並重啓mysql服務: ``` log-error=<log_path> ```
當log-raw記錄啓用時,有權訪問日誌文件的人可能會看到純文本密碼。日誌
編輯Mysql配置文件/etc/my.cnf,刪除log-raw參數,並重啓mysql服務
mysql_pwd環境變量的使用意味着mysql憑證的明文存儲,極大增長mysql憑據泄露風險。code
刪除系統環境變量中Mysql密碼(MYSQL_PWD)配置
檢查Mysql服務是否容許匿名登錄
登錄Mysql數據庫,執行如下命令刪除匿名賬戶: ``` delete from user where user=''; flush privileges; ```