<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        保障MySQL數據安全的14個最佳方法

        來源:懂視網 責編:小采 時間:2020-11-09 16:15:41
        文檔

        保障MySQL數據安全的14個最佳方法

        保障MySQL數據安全的14個最佳方法:有的企業在安裝MySQL時用的是默認選項,由此造成其數據不安全,且服務器也面臨被入侵的風險,并有可能在短時間內就出現性能問題。本文將提供保障MySQL安全的最佳方法。 MySQL數據庫一貫以高性能、高可性和易用性著稱,它已經成為世界上最流行的開源數據庫。
        推薦度:
        導讀保障MySQL數據安全的14個最佳方法:有的企業在安裝MySQL時用的是默認選項,由此造成其數據不安全,且服務器也面臨被入侵的風險,并有可能在短時間內就出現性能問題。本文將提供保障MySQL安全的最佳方法。 MySQL數據庫一貫以高性能、高可性和易用性著稱,它已經成為世界上最流行的開源數據庫。

        有的企業在安裝MySQL時用的是默認選項,由此造成其數據不安全,且服務器也面臨被入侵的風險,并有可能在短時間內就出現性能問題。本文將提供保障MySQL安全的最佳方法。 MySQL數據庫一貫以高性能、高可性和易用性著稱,它已經成為世界上最流行的開源數據庫。

          有的企業在安裝MySQL時用的是默認選項,由此造成其數據不安全,且服務器也面臨被入侵的風險,并有可能在短時間內就出現性能問題。本文將提供保障MySQL安全的最佳方法。


          MySQL數據庫一貫以高性能、高可性和易用性著稱,它已經成為世界上最流行的開源數據庫。大量的個人、WEB開發者、大型公司等都在其網站、關鍵系統、軟件包中廣泛使用MySQL數據庫。


          通常,許多企業在部署一種產品時,安全性常常得不到應有的重視。企業最關心的是使其可以盡快地運行,企業由此也可以盡快贏利。


          但有的企業在安裝MySQL時用的是默認選項,由此造成其數據不安全,且服務器也面臨被入侵的風險,并有可能在短時間內就出現性能問題。


          下面將提供保障MySQL安全的最佳方法:


          1、避免從互聯網訪問MySQL數據庫,確保特定主機才擁有訪問特權


          直接通過本地網絡之外的計算機改變生產環境中的數據庫是異常危險的。有時,管理員會打開主機對數據庫的訪問:


          > GRANT ALL ON *.* TO 'root'@'%';


          這其實是完全放開了對root的訪問。所以,把重要的操作限制給特定主機非常重要:


          > GRANT ALL ON *.* TO 'root'@'localhost';


          > GRANT ALL ON *.* TO 'root'@'myip.athome'


          > FLUSH PRIVILEGES


          此時,你仍有完全的訪問,但只有指定的IP(不管其是否靜態)可以訪問。


          2、定期備份數據庫


          任何系統都有可能發生災難。服務器、MySQL也會崩潰,也有可能遭受入侵,數據有可能被刪除。只有為最糟糕的情況做好了充分的準備,才能夠在事后快速地從災難中恢復。企業最好把備份過程作為服務器的一項日常工作。目前國內軟件多備份在這方面做得很好,基于Cloud 5技術實現多個云平臺的數據互通,自動備份,幫助企業或個人進行數據保護和管理。當出現任何問題時,立刻一鍵恢復,即可把原來的數據都恢復,做到‘原地滿血復活’


          3、禁用或限制遠程訪問


          前面說過,如果使用了遠程訪問,要確保只有定義的主機才可以訪問服務器。這一般是通過TCP wrappers、iptables或任何其它的防火墻軟件或硬件實現的。


          為限制打開網絡socket,管理員應當在my.cnf或my.ini的[mysqld]部分增加下面的參數:


          skip-networking


          這些文件位于windows的C:\Program Files\MySQL\MySQL Server 5.1文件夾中,或在Linux中,my.cnf位于/etc/,或位于/etc/mysql/。這行命令在MySQL啟動期間,禁用了網絡連接的初始化。請注意,在這里仍可以建立與MySQL服務器的本地連接。


          另一個可行的方案是,強迫MySQL僅監聽本機,方法是在my.cnf的[mysqld]部分增加下面一行:


          bind-address=127.0.0.1


          如果企業的用戶從自己的機器連接到服務器或安裝到另一臺機器上的web服務器,你可能不太愿意禁用網絡訪問。此時,不妨考慮下面的有限許可訪問:


          mysql> GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';


          這里,你要把someuser換成用戶名,把somehost換成相應的主機。


          4、設置root用戶的口令并改變其登錄名


          在linux中,root用戶擁有對所有數據庫的完全訪問權。因而,在Linux的安裝過程中,一定要設置root口令。當然,要改變默認的空口令,其方法如下:


          Access MySQL控制臺:$ mysql -u root -p


          在MySQL控制臺中執行:


          > SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');


          在實際操作中,只需將上面一行的new_password換成實際的口令即可。


          在Linux控制臺中更改root口令的另一種方法是使用mysqladmin工具:


          $ mysqladmin -u root password new_password


          此時,也是將上面一行的new_password換成實際的口令即可。


          當然,這是需要使用強口令來避免強力攻擊。


          為了更有效地改進root用戶的安全性,另一種好方法是為其改名。為此,你必須更新表用戶中的mySQL數據庫。在MySQL控制臺中進行操作:


          > USE mysql;


          > UPDATE user SET user="another_username" WHERE user="root";


          > FLUSH PRIVILEGES;


          然后,通過Linux訪問MySQL控制臺就要使用新用戶名了:


          $ mysql -u another_username -p


          5、移除測試(test)數據庫


          在默認安裝的MySQL中,匿名用戶可以訪問test數據庫。我們可以移除任何無用的數據庫,以避免在不可預料的情況下訪問了數據庫。因而,在MySQL控制臺中,執行:


          > DROP DATABASE test;


          6、禁用LOCAL INFILE


          另一項改變是禁用”LOAD DATA LOCAL INFILE”命令,這有助于防止非授權用戶訪問本地文件。在PHP應用程序中發現有新的SQL注入漏洞時,這樣做尤其重要。


          此外,在某些情況下,LOCAL INFILE命令可被用于訪問操作系統上的其它文件(如/etc/passwd),應使用下現的命令:


          mysql> LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE table1


          更簡單的方法是:


          mysql> SELECT load_file("/etc/passwd")


          為禁用LOCAL INFILE命令,應當在MySQL配置文件的[mysqld]部分增加下面的參數:


          set-variable=local-infile=0


          7、移除匿名賬戶和廢棄的賬戶


          有些MySQL數據庫的匿名用戶的口令為空。因而,任何人都可以連接到這些數據庫。可以用下面的命令進行檢查:


          mysql> select * from mysql.user where user="";


          在安全的系統中,不會返回什么信息。另一種方法是:


          mysql> SHOW GRANTS FOR ''@'localhost';


          mysql> SHOW GRANTS FOR ''@'myhost';


          如果grants存在,那么任何人都可以訪問數據庫,至少可以使用默認的數據庫“test”。其檢查方法如下:


          shell> mysql -u blablabla


          如果要移除賬戶,則執行命令:


          mysql> DROP USER "";


          從MySQL的5.0版開始支持DROP USER命令。如果你使用的老版本的MySQL,你可以像下面這樣移除賬戶:


          mysql> use mysql;


          mysql> DELETE FROM user WHERE user="";


          mysql> flush privileges;


          8、降低系統特權


          常見的數據庫安全建議都有“降低給各方的特權”這一說法。對于MySQL也是如此。一般情況下,開發人員會使用最大的許可,不像安全管理一樣考慮許可原則,而這樣做會將數據庫暴露在巨大的風險中。


          為保護數據庫,務必保證真正存儲MySQL數據庫的文件目錄是由”mysql” 用戶和” mysql”組所擁有的。


          shell>ls -l /var/lib/mysql


          此外,還要確保僅有用戶”mysql”和root用戶可以訪問/var/lib/mysql目錄。


          Mysql的二進制文件存在于/usr/bin/目錄中,它應當由root用戶或特定的”mysql”用戶所擁有。對這些文件,其它用戶不應當擁有“寫”的訪問權:


          shell>ls -l /usr/bin/my*


          9、降低用戶的數據庫特權


          有些應用程序是通過一個特定數據庫表的用戶名和口令連接到MySQL的,安全人員不應當給予這個用戶完全的訪問權。


          如果攻擊者獲得了這個擁有完全訪問權的用戶,他也就擁有了所有的數據庫。查看一個用戶許可的方法是在MySQL控制臺中使用命令SHOW GRANT


          >SHOW GRANTS FOR 'user'@'localhost';


          為定義用戶的訪問權,使用GRANT命令。在下面的例子中,user1僅能從dianshang數據庫的billing表中選擇:


          > GRANT SELECT ON billing.dianshang TO 'user1'@'localhost';


          > FLUSH PRIVILEGES;


          如此一來,user1用戶就無法改變數據庫中這個表和其它表的任何數據。


          另一方面,如果你要從一個用戶移除訪問權,就應使用一個與GRANT命令類似的REVOKE命令:


          > REVOKE SELECT ON billing.ecommerce FROM 'user1'@'localhost';


          > FLUSH PRIVILEGES;


          10、移除和禁用.mysql_history文件


          在用戶訪問MySQL控制臺時,所有的命令歷史都被記錄在~/.mysql_history中。如果攻擊者訪問這個文件,他就可以知道數據庫的結構。


          $ cat ~/.mysql_history


          為了移除和禁用這個文件,應將日志發送到/dev/null。


          $export MYSQL_HISTFILE=/dev/null


          上述命令使所有的日志文件都定向到/dev/null,你應當從home文件夾移除.mysql_history:$ rm ~/.mysql_history,并創建一個到/dev/null的符號鏈接。


          11、安全補丁


          務必保持數據庫為最新版本。因為攻擊者可以利用上一個版本的已知漏洞來訪問企業的數據庫。


          12、啟用日志


          如果你的數據庫服務器并不執行任何查詢,建議你啟用跟蹤記錄,你可以通過在/etc/my.cnf文件的[Mysql]部分添加:log =/var/log/mylogfile。


          對于生產環境中任務繁重的MySQL數據庫,因為這會引起服務器的高昂成本。


          此外,還要保證只有root和mysql可以訪問這些日志文件。


          錯誤日志


          務必確保只有root和mysql可以訪問hostname.err日志文件。該文件存放在mysql數據歷史中。該文件包含著非常敏感的信息,如口令、地址、表名、存儲過程名、代碼等,它可被用于信息收集,并且在某些情況下,還可以向攻擊者提供利用數據庫漏洞的信息。攻擊者還可以知道安裝數據庫的機器或內部的數據。


          MySQL日志


          確保只有root和mysql可以訪問logfileXY日志文件,此文件存放在mysql的歷史目錄中。


          13、改變root目錄


          Unix操作系統中的chroot可以改變當前正在運行的進程及其子進程的root目錄。重新獲得另一個目錄root權限的程序無法訪問或命名此目錄之外的文件,此目錄被稱為“chroot監獄”。


          通過利用chroot環境,你可以限制MySQL進程及其子進程的寫操作,增加服務器的安全性。


          你要保證chroot環境的一個專用目錄,如/chroot/mysql。此外,為了方便利用數據庫的管理工具,你可以在MySQL配置文件的[client]部分改變下面的參數:


          [client]


          socket = /chroot/mysql/tmp/mysql.sock


          14、禁用LOCAL INFILE命令


          LOAD DATA LOCAL INFILE可以從文件系統中讀取文件,并顯示在屏幕中或保存在數據庫中。如果攻擊者能夠從應用程序找到SQL注入漏洞,這個命令就相當危險了。下面的命令可以從MySQL控制臺進行操作:


          > SELECT LOAD_FILE("/etc/passwd");


          該命令列示了所有的用戶。解決此問題的最佳方法是在MySQL配置中禁用它,在CentOS中找到/etc/my.cnf或在Ubuntu中找到/etc/mysql/my.cnf,在[mysqld]部分增加下面一行:set-variable=local-infile=0。搞定。


          當然,唇亡齒寒,保護服務器的安全對于保障MySQL數據庫的安全也是至關重要的。服務器的安全對于數據庫來說可謂生死攸關。交給多備份,還你安全可靠的數據安全保障!


          分享自www.dbfen.com 轉載請注明

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        保障MySQL數據安全的14個最佳方法

        保障MySQL數據安全的14個最佳方法:有的企業在安裝MySQL時用的是默認選項,由此造成其數據不安全,且服務器也面臨被入侵的風險,并有可能在短時間內就出現性能問題。本文將提供保障MySQL安全的最佳方法。 MySQL數據庫一貫以高性能、高可性和易用性著稱,它已經成為世界上最流行的開源數據庫。
        推薦度:
        標簽: 安全 企業 方法
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 在线看片无码永久免费视频| 久久久免费观成人影院| 久久黄色免费网站| 久久激情亚洲精品无码?V| 亚洲国产欧洲综合997久久| 久草在视频免费福利| 亚洲黄色一级毛片| 日韩在线不卡免费视频一区| 亚洲成人在线电影| 一个人看的在线免费视频| 免费人成网站7777视频| 亚洲AV成人精品日韩一区| 成年女人免费视频播放体验区| 亚洲啪啪免费视频| 国产成人免费高清激情明星| 99人中文字幕亚洲区| 日韩人妻一区二区三区免费| 亚洲免费视频网站| 120秒男女动态视频免费| 亚洲精品亚洲人成在线观看麻豆 | 亚洲欧洲国产精品你懂的| 成人免费777777被爆出| 亚洲无线观看国产精品| a级毛片毛片免费观看久潮喷| 亚洲国产精品久久久天堂| 久久黄色免费网站| 亚洲视频在线免费看| av无码国产在线看免费网站| 色天使亚洲综合在线观看| 日本特黄a级高清免费大片| 深夜A级毛片视频免费| 亚洲国产精品综合久久网络 | 69pao强力打造免费高清| 久久综合亚洲色一区二区三区 | 成人AV免费网址在线观看| 亚洲第一区二区快射影院| 日韩一品在线播放视频一品免费| 曰批全过程免费视频观看免费软件 | 久久亚洲精品中文字幕无码 | 亚洲欧洲日产国码www| 巨胸喷奶水视频www网免费|