以下文章主要是介紹MySQL數據庫的安全配置的實際操作的介紹 ,本文例舉了相關的實例,當然這些實例都是在MySQL數據庫的安全配置的實際操作中經常出現的,如果你是數據庫的熱捧者。那麼下面的文章對於你而言一定很有意義。
關鍵字: MySQL內核 數據庫安全配置 用戶認證模塊 密碼恢復 存儲過程編寫 MySQL數據庫索引
內容摘要:
由於MySQL是多平台的數據庫,它的默認配置要考慮各種情況下都能適用,所以在我們自己的使用環境下應該進行進一步的安全加固。作為一個MySQL的系統管理員,我們有責任維護MySQL數據庫系統的數據安全性和完整性。
如果啟動MySQL數據庫的用戶是mysql,那麼象如下的目錄和文件的是安全的,請注意數據目錄及下面的屬性:
- shell>ls-l/usr/local/mysql
- total40
- drwxrwxr-x2rootroot4096Feb2720:07bin
- drwxrwxr-x3rootroot4096Feb2720:07include
- drwxrwxr-x2rootroot4096Feb2720:07info
- drwxrwxr-x3rootroot4096Feb2720:07lib
- drwxrwxr-x2rootroot4096Feb2720:07libexec
- drwxrwxr-x3rootroot4096Feb2720:07man
- drwxrwxr-x6rootroot4096Feb2720:07mysql-test
- drwxrwxr-x3rootroot4096Feb2720:07share
- drwxrwxr-x7rootroot4096Feb2720:07sql-bench
- drwx------4mysqlmysql4096Feb2720:07var
- shell>ls-l/usr/local/mysql/var
- total8
- drwx------2mysqlmysql4096Feb2720:08mysql
- drwx------2mysqlmysql4096Feb2720:08test
- shell>ls-l/usr/local/mysql/var/mysql
- total104
- -rw-------1mysqlmysql0Feb2720:08columns_priv.MYD
- -rw-------1mysqlmysql1024Feb2720:08columns_priv.MYI
- -rw-------1mysqlmysql8778Feb2720:08columns_priv.frm
- -rw-------1mysqlmysql302Feb2720:08db.MYD
- -rw-------1mysqlmysql3072Feb2720:08db.MYI
- -rw-------1mysqlmysql8982Feb2720:08db.frm
- -rw-------1mysqlmysql0Feb2720:08func.MYD
- -rw-------1mysqlmysql1024Feb2720:08func.MYI
- -rw-------1mysqlmysql8641Feb2720:08func.frm
- -rw-------1mysqlmysql0Feb2720:08host.MYD
- -rw-------1mysqlmysql1024Feb2720:08host.MYI
- -rw-------1mysqlmysql8958Feb2720:08host.frm
- -rw-------1mysqlmysql0Feb2720:08tables_priv.MYD
- -rw-------1mysqlmysql1024Feb2720:08tables_priv.MYI
- -rw-------1mysqlmysql8877Feb2720:08tables_priv.frm
- -rw-------1mysqlmysql428Feb2720:08user.MYD
- -rw-------1mysqlmysql2048Feb2720:08user.MYI
- -rw-------1mysqlmysql9148Feb2720:08user.frm
如果這些文件的屬主及屬性不是這樣,請用以下兩個命令修正之:
- shell>chown-Rmysql.mysql/usr/local/mysql/var
- shell>chmod-Rgo-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服務器,那麼,MySQL數據庫用戶就擁有了root用戶的寫權限。不過MySQL還是做了一些限制的,比如LOAD DATA INFILE只能讀全局可讀的文件,SELECT ... INTO OUTFILE不能覆蓋已經存在的文件。