MySQL數據庫平安設置裝備擺設引見第1/2頁。本站提示廣大學習愛好者:(MySQL數據庫平安設置裝備擺設引見第1/2頁)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL數據庫平安設置裝備擺設引見第1/2頁正文
1、媒介:
MySQL數據庫是完整收集化的跨平台關系型數據庫體系,同時是具有客戶機/辦事器系統構造的散布式數據庫治理體系。它具有功效強、應用輕便、治理便利、運轉速度快、平安靠得住性強等長處,用戶可應用很多說話編寫拜訪MySQL數據庫的法式,特殊是與PHP更是黃金組合,應用非常普遍。MySQL數據庫的平安設置裝備擺設也是很有需要的,如今的MySQL數據庫中信息的平安性經常遭到威逼,故平安設置裝備擺設必弗成少。
因為MySQL是多平台的數據庫,它的默許設置裝備擺設要斟酌各類情形下都能實用,所以在我們本身的應用情況下應當停止進一步的平安加固。作為一個MySQL的體系治理員,我們有義務保護MySQL數據庫體系的數據平安性和完全性。
MySQL數據庫的平安設置裝備擺設必需從兩個方面動手,體系外部平安和內部收集平安,別的我們還將簡略引見編程時要留意的一些成績和一些小訣竅。
2、體系外部平安
起首簡略引見一下MySQL數據庫目次構造。MySQL裝置好,運轉了mysql_db_install劇本今後就會樹立數據目次和初始化數據庫。假如我們用MySQL源碼包裝置,並且裝置目次是/usr/local/mysql,那末數據目次普通會是/usr/local/mysql/var。數據庫體系由一系列數據庫構成,每一個數據庫包括一系列數據庫表。MySQL是用數據庫名在數據目次樹立樹立一個數據庫目次,各數據庫表分離以數據庫表名作為文件名,擴大名分離為MYD、MYI、frm的三個文件放到數據庫目次中。
MySQL的受權表給數據庫的拜訪供給了靈巧的權限掌握,然則假如當地用戶具有對庫文件的讀權限的話,進擊者只需把數據庫目次打包拷走,然後拷到本身本機的數據目次下就可以拜訪盜取的數據庫。所以MySQL地點的主機的平安性是最重要的成績,假如主機不平安,被進擊者掌握,那末MySQL的平安性也無從談起。其次就是數據目次和數據文件的平安性,也就是權限設置成績。
從MySQL主站一些老的binary刊行版來看,3.21.xx版本中數據目次的屬性是775,如許異常風險,任何當地用戶都可以讀數據目次,所以數據庫文件很不平安。3.22.xx版本中數據目次的屬性是770,這類屬性也有些風險,當地的同組用戶既能讀也能寫,所以數據文件也不平安。3.23.xx版本數據目次的屬性是700,如許就比擬好,只要啟動數據庫的用戶可以讀寫數據庫文件,包管了當地數據文件的平安。
假如啟動MySQL數據庫的用戶是mysql,那末象以下的目次和文件的是平安的,請留意數據目次及上面的屬性:
shell>ls -l /usr/local/mysql
total 40
drwxrwxr-x 2 root root 4096 Feb 27 20:07 bin
drwxrwxr-x 3 root root 4096 Feb 27 20:07 include
drwxrwxr-x 2 root root 4096 Feb 27 20:07 info
drwxrwxr-x 3 root root 4096 Feb 27 20:07 lib
drwxrwxr-x 2 root root 4096 Feb 27 20:07 libexec
drwxrwxr-x 3 root root 4096 Feb 27 20:07 man
drwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-test
drwxrwxr-x 3 root root 4096 Feb 27 20:07 share
drwxrwxr-x 7 root root 4096 Feb 27 20:07 sql-bench
drwx------ 4 mysql mysql 4096 Feb 27 20:07 var
shell>ls -l /usr/local/mysql/var
total 8
drwx------ 2 mysql mysql 4096 Feb 27 20:08 mysql
drwx------ 2 mysql mysql 4096 Feb 27 20:08 test
shell>ls -l /usr/local/mysql/var/mysql
total 104
-rw------- 1 mysql mysql 0 Feb 27 20:08 columns_priv.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI
-rw------- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm
-rw------- 1 mysql mysql 302 Feb 27 20:08 db.MYD
-rw------- 1 mysql mysql 3072 Feb 27 20:08 db.MYI
-rw------- 1 mysql mysql 8982 Feb 27 20:08 db.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 func.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 func.MYI
-rw------- 1 mysql mysql 8641 Feb 27 20:08 func.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 host.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 host.MYI
-rw------- 1 mysql mysql 8958 Feb 27 20:08 host.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 tables_priv.MYI
-rw------- 1 mysql mysql 8877 Feb 27 20:08 tables_priv.frm
-rw------- 1 mysql mysql 428 Feb 27 20:08 user.MYD
-rw------- 1 mysql mysql 2048 Feb 27 20:08 user.MYI
-rw------- 1 mysql mysql 9148 Feb 27 20:08 user.frm
假如這些文件的屬主及屬性不是如許,請用以下兩個敕令修改之:
shell>chown -R mysql.mysql /usr/local/mysql/var
shell>chmod -R go-rwx /usr/local/mysql/var
用root用戶啟動長途辦事一向是平安年夜忌,由於假如辦事法式湧現成績,長途進擊者極有能夠取得主機的完整掌握權。MySQL從3.23.15版本開端時作了小小的修改,默許裝置後辦事要用mysql用戶來啟動,不許可root用戶啟動。假如非要用root用戶來啟動,必需加上--user=root的參數(./safe_mysqld --user=root &)。由於MySQL中有LOAD DATA INFILE和SELECT ... INTO OUTFILE的SQL語句,假如是root用戶啟動了MySQL辦事器,那末,數據庫用戶就具有了root用戶的寫權限。不外MySQL照樣做了一些限制的,好比LOAD DATA INFILE只能讀全局可讀的文件,SELECT ... INTO OUTFILE不克不及籠罩曾經存在的文件。
當地的日記文件也不克不及疏忽,包含shell的日記和MySQL本身的日記。有些用戶在當地上岸或備份數據庫的時刻為了圖便利,有時會在敕令行參數裡直接帶了數據庫的暗碼,如:
shell>/usr/local/mysql/bin/mysqldump -uroot -ptest test>test.sql
shell>/usr/local/mysql/bin/mysql -uroot -ptest
這些敕令會被shell記載在汗青文件裡,好比bash會寫入用戶目次的.bash_history文件,假如這些文件失慎被讀,那末數據庫的暗碼就會洩露。用戶上岸數據庫後履行的SQL敕令也會被MySQL記載在用戶目次的.mysql_history文件裡。假如數據庫用戶用SQL語句修正了數據庫暗碼,也會因.mysql_history文件而洩露。所以我們在shell上岸及備份的時刻不要在-p後直接加暗碼,而是在提醒後再輸出數據庫暗碼。
別的這兩個文件我們也應當不讓它記載我們的操作,以防萬一。
shell>rm .bash_history .mysql_history
shell>ln -s /dev/null .bash_history
shell>ln -s /dev/null .mysql_history
上門這兩條敕令把這兩個文件鏈接到/dev/null,那末我們的操作就不會被記載到這兩個文件裡了。
以後1/2頁 12下一頁浏覽全文