程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 如何對MySQL服務器進行安全的配置?

如何對MySQL服務器進行安全的配置?

編輯:MySQL綜合教程

在實際操作中我們為了更加安全地對MySQL數據庫進行使用,我們需要對MySQL服務器進行安全的配置。因為Chroot的原因,配置文件也會有所差異,假如你在實際操作中遇到相似的情況,但是你卻不知道對其如何正確的解決,那麼以下的文章對你而言一定是良師益友。

1.關閉遠程連接

首先,應該關閉3306端口,這是MySQL的默認監聽端口。由於此處MySQL只服務於本地腳本,所以不需要遠程連接。盡管MySQL內建的安全機制很嚴格,但監聽一個TCP端口仍然是危險的行為,因為如果MySQL程序本身有問題,那麼未授權的訪問完全可以繞過MySQL的內建安全機制。關閉網絡監聽的方法很簡單,在/chroot/mysql/etc/my.cnf文件中的[mysqld]部分,去掉#skip-networking前面的“#”即可。

關閉了網絡,本地程序如何連接MySQL數據庫呢?本地程序可以通過mysql.sock來連接,速度比網絡連接更快。後文將提到關於mysql.sock的具體情況。

MySQL的備份通常使用SSH來執行。

2.禁止MySQL導入本地文件

下面將禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。這個命令會利用MySQL把本地文件讀到數據庫中,然後用戶就可以非法獲取敏感信息了。

為了禁止上述命令,在/chroot/mysql/etc/my.cnf文件的[mysqld]部分加入下面語句:


 

  1. set-variable=local-infile=0 


為了管理方便,一般在系統中的MySQL管理命令如mysql、mysqladmin、mysqldump等,使用的都是系統的/etc/my.cnf文件。如果要連接,它會尋找/tmp/mysql.sock文件來試圖連接MySQL服務器,但是這裡要連接的是chroot下的MySQL服務器。解決辦法有兩個:一個是在管理命令後面加入--socket=/chroot/mysql/tmp/mysql.sock。例如:


 

  1. #/usr/local/mysql/bin/mysql -root -p --socket=/chroot/mysql/tmp/mysql.sock 


另一個就是在/etc/my.cnf的[client]部分加入socket=/chroot/mysql/tmp/mysql.sock。顯然,第二種方法方便多了。

3.修改MySQL的root用戶ID和密碼


 

  1. #chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &  
  2. #/usr/local/mysql/bin/mysql -uroot  
  3. .......  
  4. mysql>SET PASSWORD FOR root@localhost=PASSWORD('new_password'); 


要盡量養成在mysql下輸入密碼的習慣,因為Shell下面輸入的時候可能會被其它人看見。

  1. mysql>use mysql;  
  2. mysql>update user set user="wghgreat" where user="root";  
  3. mysql>select Host,User,Password,Select_priv,Grant_priv from user;  
  4. mysql>delete from user where user='';  
  5. mysql>delete from user where password='';  
  6. mysql>delete from user where host='%';  
  7. mysql>drop database test; 


修改為一個不容易猜的ID:


 

  1. mysql>flush privileges;  
  2. mysql>quit; 


4.刪除歷史命令記錄

這些歷史文件包括~/.bash_history、~/.mysql_history等。如果打開它們,你會大吃一驚,怎麼居然有一些明文的密碼在這裡?!


 

  1. #cat /dev/null > ~/.bash_history  
  2. #cat /dev/null > ~/.mysql_history 


PHP和MySQL通信

默認情況下,PHP會通過/tmp/mysql.sock來和MySQL通信,但這裡的一個大問題是MySQL生成的根本不是它,而是/chroot/mysql/tmp/mysql.sock。解決的辦法就是做一個連接:


 

  1. #ln /chroot/mysql/tmp/mysql.sock /tmp/mysql.sock 


注意:由於hard links不能在文件系統的分區之間做,所以該處的連接必須位於同一分區內部。以上的相關內容就是對配置MySQL服務器的介紹,望你能有所收獲。

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