如何消除MySQL賬號的安全隱患
(1).給MySQL賬號賦予其所需要的最小許可權,避免為MySQL賬號授予alter,grant許可權
(2).刪除匿名賬號
匿名賬號容易帶來安全隱患,建議刪除,執行如下SQL語句即可刪除許可權表中所有的匿名賬號:
mysql>delete from mysql.user where user='';
mysql>delete from mysql.db where user='';
mysql>delete from mysql.tables_priv where user='';
mysql>delete from mysql.columns_priv where user='';
mysql>delete from mysql.procs_priv where user='';
(3).刪除登入主機可以是任意主機的MySQL賬號
登入主機為"%"或者空字串的MySQL賬戶,容易帶來安全隱患,建議刪除,執行如下SQL語句即可刪除許可權表中登入主機為"%"或空字串的MySQL賬戶。
mysql>delete from mysql.user where host='%' or host='';
mysql>delete from mysql.db where host='%' or host='';
mysql>delete from mysql.tables_priv where host='%' or host='';
mysql>delete from mysql.columns_priv where host='%' or host='';
mysql>delete from mysql.procs_priv where host='%' or host='';
(4).修改root賬號的密碼
root賬號擁有MySQL服務例項最高的許可權,資料庫超級管理員root賬號有必要定製修改root賬號的密碼,執行如下SQL來修改:
mysql>set password for root@'localhost'=password('newroot');
mysql>set password for root@'127.0.0.1'=password('newroot');
(5).修改root賬號的賬號名
安裝MySQL時,MySQL將自動建立資料庫超級管理員root賬戶,且該賬戶擁有對資料庫的最高許可權,資料庫超級管理員有必要對自己重新命名,執行如下SQL來修改:
mysql>rename user root@'localhost' to newroot@'localhost';
mysql>rename user root@'127.0.0.1' to newroot@'127.0.0.1';
(6).修改MySQL服務的埠號
預設情況下,MySQL使用3306埠號為MySQL客戶端提供MySQL服務,將埠號修改為其它埠號,可以避免非法使用者遠端連線MySQL伺服器,Linux系統可以透過
修改my.cnf配置檔案[mysqld]選項組"port=3306"的引數值來完成
(7).禁止遠端連線
向my.cnf或my.ini(windows平臺)配置檔案[mysqld]選項組新增引數資訊"bind_address=127.0.0.1",告訴MySQL伺服器只能監聽來自"127.0.0.1"或者"localhost"本地主機的連線請求,禁止遠端連線。
(8).為遠端連線的資料庫使用者提供安全的賬號名、密碼和連線主機。
(9).禁止MySQL讀取MySQL客戶機本地檔案
使用"load data local infile"命令可以將MySQL客戶機的本地檔案匯入MySQL資料庫表中,如果非法使用者
透過該命令將非法資訊匯入到MySQL系統的資料庫許可權表中,後果不堪設想。資料庫可以在my.cnf或my.ini
配置檔案[mysqld]選項組中新增"local_infile=0"引數資訊來禁止MySQL讀取MySQL客戶機本地檔案。
(10).除非必要,避免為MySQL賬戶授予file許可權,防止資料庫使用者在MySQL伺服器上建立file
說明:如果某個MySQL賬號需要執行"select..into..outfile"命令完成資料庫的備份工作,那麼該賬戶需要授予file許可權
MySQL安全管理的其他注意事項:
(1).當刪除物件時,MySQL不會去清理那些舊許可權,這些舊許可權會一直留在那裡。如果未來的某個時候又以同樣的名字建立了該物件,那麼這些許可權依舊有效。
(2).避免使用insert,update,delete等更新語句直接操作許可權表
(3).由於MySQL沒有提供使用者組或角色這樣的功能,命名MySQL賬戶名時,可以在賬戶名中新增字尾或者字首(例如複製賬號新增"_replication"字尾),使用這種方法可以透過萬用字元批次修改使用者許可權,模擬實現使用者組或角色功能。
(4).由於MySQL服務例項的"管理"許可權,例如shutdown,process,show databases,super,create user,create tablespace等許可權,功能太強大,建議將擁有這些許可權的MySQL賬號限制在一臺單獨的主機上使用.
(2).刪除匿名賬號
匿名賬號容易帶來安全隱患,建議刪除,執行如下SQL語句即可刪除許可權表中所有的匿名賬號:
mysql>delete from mysql.user where user='';
mysql>delete from mysql.db where user='';
mysql>delete from mysql.tables_priv where user='';
mysql>delete from mysql.columns_priv where user='';
mysql>delete from mysql.procs_priv where user='';
(3).刪除登入主機可以是任意主機的MySQL賬號
登入主機為"%"或者空字串的MySQL賬戶,容易帶來安全隱患,建議刪除,執行如下SQL語句即可刪除許可權表中登入主機為"%"或空字串的MySQL賬戶。
mysql>delete from mysql.user where host='%' or host='';
mysql>delete from mysql.db where host='%' or host='';
mysql>delete from mysql.tables_priv where host='%' or host='';
mysql>delete from mysql.columns_priv where host='%' or host='';
mysql>delete from mysql.procs_priv where host='%' or host='';
(4).修改root賬號的密碼
root賬號擁有MySQL服務例項最高的許可權,資料庫超級管理員root賬號有必要定製修改root賬號的密碼,執行如下SQL來修改:
mysql>set password for root@'localhost'=password('newroot');
mysql>set password for root@'127.0.0.1'=password('newroot');
(5).修改root賬號的賬號名
安裝MySQL時,MySQL將自動建立資料庫超級管理員root賬戶,且該賬戶擁有對資料庫的最高許可權,資料庫超級管理員有必要對自己重新命名,執行如下SQL來修改:
mysql>rename user root@'localhost' to newroot@'localhost';
mysql>rename user root@'127.0.0.1' to newroot@'127.0.0.1';
(6).修改MySQL服務的埠號
預設情況下,MySQL使用3306埠號為MySQL客戶端提供MySQL服務,將埠號修改為其它埠號,可以避免非法使用者遠端連線MySQL伺服器,Linux系統可以透過
修改my.cnf配置檔案[mysqld]選項組"port=3306"的引數值來完成
(7).禁止遠端連線
向my.cnf或my.ini(windows平臺)配置檔案[mysqld]選項組新增引數資訊"bind_address=127.0.0.1",告訴MySQL伺服器只能監聽來自"127.0.0.1"或者"localhost"本地主機的連線請求,禁止遠端連線。
(8).為遠端連線的資料庫使用者提供安全的賬號名、密碼和連線主機。
(9).禁止MySQL讀取MySQL客戶機本地檔案
使用"load data local infile"命令可以將MySQL客戶機的本地檔案匯入MySQL資料庫表中,如果非法使用者
透過該命令將非法資訊匯入到MySQL系統的資料庫許可權表中,後果不堪設想。資料庫可以在my.cnf或my.ini
配置檔案[mysqld]選項組中新增"local_infile=0"引數資訊來禁止MySQL讀取MySQL客戶機本地檔案。
(10).除非必要,避免為MySQL賬戶授予file許可權,防止資料庫使用者在MySQL伺服器上建立file
說明:如果某個MySQL賬號需要執行"select..into..outfile"命令完成資料庫的備份工作,那麼該賬戶需要授予file許可權
MySQL安全管理的其他注意事項:
(1).當刪除物件時,MySQL不會去清理那些舊許可權,這些舊許可權會一直留在那裡。如果未來的某個時候又以同樣的名字建立了該物件,那麼這些許可權依舊有效。
(2).避免使用insert,update,delete等更新語句直接操作許可權表
(3).由於MySQL沒有提供使用者組或角色這樣的功能,命名MySQL賬戶名時,可以在賬戶名中新增字尾或者字首(例如複製賬號新增"_replication"字尾),使用這種方法可以透過萬用字元批次修改使用者許可權,模擬實現使用者組或角色功能。
(4).由於MySQL服務例項的"管理"許可權,例如shutdown,process,show databases,super,create user,create tablespace等許可權,功能太強大,建議將擁有這些許可權的MySQL賬號限制在一臺單獨的主機上使用.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2135669/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS開發如何避免安全隱患iOS
- 設計院如何解決安全隱患?
- 運維安全隱患運維
- PHP雙引號的小隱患PHP
- LMCompatibilityLevel 安全隱患
- DATABASE VAULT授權的安全隱患Database
- Laravel Bindings 的一處安全隱患Laravel
- 免費WIFI的安全隱患——資訊圖WiFi
- Windows 2000 的安全隱患 (轉)Windows
- 全面降低windows系統的安全隱患(五)Windows
- 免費代理IP有哪些安全隱患
- 去除windows身份認證帶來的安全隱患Windows
- 杜絕安全隱患 容易忽視的Oracle安全問題(轉)Oracle
- 無線安全隱患分析:使用者位置隱私曝光
- HTML框架的隱患HTML框架
- 自籤SSL證書有哪些安全隱患
- 公交wifi隱患多,安全問題堪憂WiFi
- 跨界人才跳槽所帶來的資料安全隱患應如何解決?
- 申請 mysql 賬號MySql
- 讓員工成為安全解決方案,而非安全隱患
- 海外 | 威脅物聯網的7大安全隱患
- 郵件安全隱患及其防範技術研究
- RSA2010:雲安全需急迫解決的安全隱患
- 解構IoT安全隱患,探尋安全防護部署新思路
- MySql 建立只讀賬號MySql
- 如何消除冗餘資料的安全風險?
- 從客戶端遊戲漏洞看開發中的安全隱患客戶端遊戲
- 數字化醫療建設中的網路安全隱患
- 關於區塊鏈技術安全隱患的解決方案區塊鏈
- 儲存網路在企業應用中的安全隱患
- IPIDEA分享|Facebook賬號如何實現安全運營?Idea
- Linux需要防毒軟體嗎?存在安全隱患嗎?Linux防毒
- WebApi系列~HttpClient的效能隱患WebAPIHTTPclient
- DNS安全問題有哪些?DNS系統存在哪些安全隱患?DNS
- 教你如何優雅的用MySQL備份賬號相關資訊MySql
- Windows的愛與恨不得不防的網路安全隱患Windows
- 【IT運維】如何有效保障伺服器賬號密碼安全?運維伺服器密碼
- 企業資料安全防護要注意五大安全隱患