韌館-LearnHouse

Archive for 3 月 19th, 2007

phpMyAdmin中使用者只能操作與看到自己的資料庫

之前使用學校的空間架設論壇

老師給我的phpMyAdmin權限只能看到自己的資料庫與test資料庫

其它更改自己的權限與瀏覽別人的資料庫的權限是關閉的

這麼一來資料庫也變得比較安全

如今我自己在家的電腦也架設了幾個需要用到資料庫的網站

而且也分給不同網站建置者使用MySQL

因此決定要使用和學校一樣的方式提升資料庫的安全

引用來源 

一.利用phpMyAdmin這套軟體來新增學務系統的資料庫使用者帳號,並建立一個新的資料庫給此帳號來使用。

1.安裝phpMyAdmin

cd /home/x/public_html #進入x的家目錄
wget http://ftp.ccu.edu.tw/pub/packages/database/phpmyadmin/phpMyAdmin-2.7.0-rc1.tar.gz #下載phpMyAdmin
tar zxvf phpMyAdmin-2.7.0-rc1.tar.gz #解壓縮
mv phpMyAdmin-2.7.0-rc1 phpMyAdmin #將解完的目錄更名為phpMyAdmin

2.修改phpMyAdmin的設定檔config.default.php

vi phpMyAdmin/config.default.php

3.修改31行,設定phpMyAdmin的執行網址(記得按A,以進入編輯模式):

$cfg['PmaAbsoluteUri'] = 'http://網址/~x/phpMyAdmin/';

4.修改71行,設定phpMyAdmin的認證方式,建議用http較安全,不建議用config跟cookie:

$cfg['Servers'][$i]['auth_type'] = 'http';

最後按 Esc ,輸入「:wq」儲存離開。

5.打開瀏覽器,輸入剛剛在31行所寫的phpMyAdmin執行網址,然後用root帳號跟密碼登入。

6.先建立一個資料庫,資料庫名稱的第一個字一定要是英文,不可用數字。

圖 1. 建立資料庫
圖 1. 建立資料庫

7.點選「權限」,準備新增使用者。

圖 2. 設定權限
圖 2. 設定權限

圖 3. 新增使用者
圖 3. 新增使用者

8.輸入使用者名稱.主機跟密碼,下面的整體權限皆不給,也就是說,他只能看到自己能用的資料庫而已,別的資料庫一律無法讓他使用。

圖 6. 設定新使用者帳號密碼和整體權限(整體權限不要勾)
圖 6. 設定新使用者帳號密碼和整體權限(整體權限不要勾)

9.指定剛剛新增的資料庫給新使用者用:

圖 7. 指定該使用者能用的資料庫
圖 7. 指定該使用者能用的資料庫

注意喔!

萬一您點選「權限」出現錯誤訊息時:

圖 8. 權限表太舊所產生的訊息
圖 8. 權限表太舊所產生的訊息

那表示您的權限紀錄表太舊,解決方法很簡單:
1.用root身份ssh連回主機中
2.在任何地方下以下指令:mysql_fix_privilege_table 資料庫管理者密碼
3.若找不到 mysql_fix_privilege_table 指令,那麼用 locate mysql_fix_privilege_table 找一下,並以完整路徑來執行以上指令即可。
4.再回到phpMyAdmin就OK囉!

10.把該資料庫的功能權限都開給他,但管理權限則否。

圖 4. 設定該使用者對該資料庫的權限
圖 4. 設定該使用者對該資料庫的權限

11.登出phpMyAdmin,然後以新使用者的身份登入,如果看見如以下訊息,那表示OK囉!

圖 5. 重新以新使用者身份登入試試
圖 5. 重新以新使用者身份登入試試
小常識

您也可以用指令來新增資料庫,並指定可以使用此資料庫的使用者:
CREATE DATABASE `資料庫名稱`;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES ON 資料庫名稱.* TO '資料庫帳號'@'localhost' IDENTIFIED BY '資料庫密碼' ;

小技巧 若忘了MySQL的管理者密碼該怎麼辦?

1.先停掉mysql

/etc/rc.d/init.d/mysqld stop

2.以--skip-grant-table 的參數啟動mysql

safe_mysqld --skip-grant-table&

3. 更改root 密碼

mysql mysql

mysql> UPDATE user SET password=password('newpassword') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> exit

4.停掉mysql再重跑
mysqladmin -uroot -p shutdown
Enter password: //輸入新設定的密碼
/etc/rc.d/init.d/mysqld start

2007年3 月 posted by admin in Linux and have Comments (2)