|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1735324
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2013/1/27 9:47 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [分享]如何讓某一使用者透過 phpMyAdmin 登入時只能看到要給他管理的資料表
- 如何讓某一使用者透過 phpMyAdmin 登入時只能看到要給他管理的資料表?
如果您新增一個使用者只允許他有使用某些資料庫權限時,在新增此使用者時不要給任何的權限, 改由phpMyAdmin首頁中的[權限]連結進入並選定編輯的使用者,進入後會有幾個項目,選擇[指定資料庫權限], 再做權限的編輯即可給定該使用者可使用哪些資料庫或資料庫下的資料表的權限。
也就是說,先建立一個使用者,給他帳號密碼,但是不給他任何權限! 然後透過 phpMyAdmin 首頁的『權限』功能來編輯該使用者可以「操作哪個資料庫」! 記得權限修改完後都要『FLUSH PRIVILEGES』喔!
另外一個方法: 案例: 系統管理員想讓 admin 這個帳號透過 phpmyadmin 管理 mydb 資料庫, 但又不想讓 admin 看到 mydb 裡面的某表格內容
解決辦法: 以 grant 命令逐一賦予 mydb 各資料表權限, 略過特定資料表
#清除權限設置. 如果 admin 帳號從未建立則省略此步驟
$> mysql -u root -p -A mysql
mysql> delete from tables_priv where user='admin' and db='mydb';
mysql> revoke all privileges from admin@localhost;
mysql> flush privileges;
mysql> exit
#匯出目的資料庫
$> mysqldump -u root -p mydb > mydb.sql
#取出所有表格名稱, 用來組合 grant (賦予權限) sql 命令
$> for i in $(grep 'CREATE TABLE' mydb.sql | cut -d '`' -f 2); do \
> echo "grant select,insert,update,delete on mydb.$i to admin@localhost;" | \
> tee -a ok.sql; \
> done
$> echo "flush privileges;" >> ok.sql
#移除不想賦予權限的表格
$> sed -i '/secret_table/d' ok.sql
#匯入權限設置
$> mysql -u root -p < ok.sql
#如果 admin 這個帳號從未建立, 匯入 ok.sql 的同時系統將自動建立該帳號, 密碼為空白 #匯入完成後記得設定密碼:
$> mysql -u root -p -A mysql
mysql> update user set password=password('admins_password') where user='admin';
mysql> exit
#如啟用了新版 phpmyadmin 的關聯資料表附加功能 (advanced features, pmadb) #須賦予必要權限:
$> mysql -u root -p -A mysql
mysql> grant select,insert,update,delete on phpmyadmin.* to admin@localhost;
mysql> flush privileges;
mysql> exit
冷日參考文件: PROLinux - 技術支援討論區 - 技術支援討論區 - MySQL用戶可以存取他自己的資料庫 mysql 權限管理備忘 « Jamyy's Weblog
|
|
|
討論串
|