本文由ilanniweb提供友情贊助,首發於爛泥行天下 想要獲得更多的文章,可以關註我的微信ilanniweb 其實這篇文章很早就想寫了,但是一直沒有時間。剛好今天下午稍微空了點,就把這篇文章整理出來。 有關phpmyadmin的文章,在百度一搜,能搜出來很多。這篇文章我就介紹下,如何通過phpmy... ...
本文由ilanniweb提供友情贊助,首發於爛泥行天下
想要獲得更多的文章,可以關註我的微信ilanniweb
其實這篇文章很早就想寫了,但是一直沒有時間。剛好今天下午稍微空了點,就把這篇文章整理出來。
有關phpmyadmin的文章,在百度一搜,能搜出來很多。這篇文章我就介紹下,如何通過phpmyadmin控制開發人員對資料庫的操作。
當然有關資料庫的安全,我們可以從三個方面進行考慮:
1)、mysql資料庫伺服器,包括伺服器本身的安全等。
2)、mysql訪問許可權,包括資料庫用戶許可權,以及訪問資料庫方法等。
3)、mysql資料庫訪問後的安全,包括是否允許導出數據等。
今天我們通過phpmyadmin來控制開發人員對資料庫的操作,其實就是結合第二點和第三點來禁止用戶訪問資料庫後導出數據。
一、phpmyadmin安裝
首先我們來先安裝phpmyadmin,在此我們使用的是源碼方式進行安裝,而且安裝的是最新版4.6.4,如下:
wget https://files.phpmyadmin.net/phpMyAdmin/4.6.4/phpMyAdmin-4.6.4-all-languages.zip
unzip phpMyAdmin-4.6.4-all-languages.zip -d /data/dg/
mv /data/dg/phpMyAdmin-4.6.4-all-languages/ /data/dg/app_db/
chmod 755 -R /data/dg/app_db/
註意:phpmyadmin需要lnmp環境,所以在運行phpmyadmin之前,需要把相關的基礎的環境安裝好。
phpmyadmin解壓安裝完畢後,我們再來配置下nginx,如下:
在此我開啟了nginx的目錄索引功能,主要是考慮到瞭如果有多個資料庫的話,我們可以通過目錄名稱的方式進行區分。
比如,我們線上的資料庫如下:
現在訪問一下,如下:
通過上圖,我們可以很明顯的看出,目前已經可以正常訪問phpmyadmin了,但是需要我們輸入相關的用戶名和密碼。
二、phpmyadmin免密碼配置
第一章節中,我們已經安裝好了phpmyadmin,這一章節我們來配置下phpmyadmin,免密碼登陸訪問。
在此我們以app_db這個資料庫為例。要實現免密碼登陸訪問之前,我們還需要先在mysql資料庫中創建一個針對app_db資料庫的只讀用戶ilanniread。
創建sql語句如下:
mysql -hrm-bp183j9f186nd4933.mysql.rds.aliyuncs.com -uroot -p'ilanni' -e "grant select on app_db.* to 'ilanniread'@'%' identified by 'readonlyQWE';
ilanniread創建完畢後,我們現在來修改phpmyadmin的配置文件config.default.php。
對於config.default.php文件,我們只需要修改106、252、259行,其中第106行是資料庫的連接地址,而第252行和259行分別是資料庫的用戶名和密碼。如下:
修改完畢後,我們再來訪問下,看看實際的效果,如下:
通過上圖,我們可以很明顯的看到,目前訪問phpmyadmin是不需要輸入資料庫的用戶名和密碼了。
而且通過這樣做以後,我們也可以讓開發人員不需要知道資料庫實際的地址以及資料庫的用戶名和密碼,相對來說安全性還是提高了不少。
三、禁止phpmyadmin導出數據
第二章節,我們配置了phpmyadmin的免密碼訪問,現在再來配置如何禁止通過phpmyadmin導出查詢出來的數據。
預設情況下,phpmyadmin是可以導出整個資料庫的,如下:
為了防止開發人員私自導出查詢出來的結果,我們可以這樣處理,把phpmyadmin根目錄下的tbl_export.php或者export.php文件進行重命名即可,如下:
mv export.php export.php.bak
修改完畢後,我們再來導出數據看看,如下:
通過上圖,我們可以很容易的看出目前無法把數據導出,這樣就達到了我們禁止phpmyadmin導出數據的目的。
註意:export.php文件是針對整個資料庫的導出的,如果要禁止查詢後的導出,那麼需要我們重命名tbl_export.php文件即可。
PS:安全是相對的,沒有絕對的安全,我們只能做到防君子不防小人。