程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫平安設置裝備擺設引見第1/2頁

MySQL數據庫平安設置裝備擺設引見第1/2頁

編輯:MySQL綜合教程

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下一頁浏覽全文

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved