MySQL的容易操作, 讓人一直對其權限控管有疑慮. 昨天談到建立資料庫, 簡單一行指令就完成資料庫的建立, 簡單到用過MS-SQL Server及Oracle的資料庫管理者, 不禁懷疑起MySQL的資訊安全是否有問題? 還能於到Internet上網眾駭客玩?
今天, 我們先來談談MySQL下的帳號與權限的指令, 至於如何控管, 留到更深入探究MySQL的安全防能力時再來討論.
同樣的, 打開"Konsole"或"Terminal"(在Linxu左上角的[Applications]->[System Tools]中)
$ su - <<進入系統管理者帳號>>
為了建立帳號, 還是進入系統資料庫中, 前天在變更root帳號的密碼時, 是到系統資料庫中下"UPDATE"指令....各位可能想到, 新增加一個使用者帳號是用"INSERT"指令, 是的, 您答 對了...
(什麼...你不懂SQL指令..嗯..我們以後再詳細討論或請自己找一本SQL的指令書參考或上網查SQL UPDATE")
mysql> insert into user values ('localhost','simon',password('密碼'),'n','n','n','n','n','n','n','n','n','n','n','n','n','n');
這樣就可以在本機(localhost)新增一位帳號simon的使用者, 記得"密碼"要用系統函數"password"來做壓密的動作否 記得"密碼"要用系統函數"password"來做壓密的動作否則會成為明碼或出現錯誤無法建立帳號, 至於那一大堆的'n', 是指14個資料庫權限不開放, 那14個呢?, 如下:
1.Select_priv
2.Insert_priv
3.Update_priv
4.Delete_priv
5.Index_priv
6.Alter_priv
7.Create_priv
8.Drop_priv
9.Grant_priv
10.References_priv
11.Reload_priv
12.Shutdown_priv
13.Process_priv
14.File_priv
總共14個, 如果想在建立帳號時給予預設權限, 可以改成'y', 但為了資訊安全及更好的權限控管的目的, 建議先都不要給, 以後再以GRANT指令給予即可.
這14個權限的功用, 以及以下談到的權限, 我們明天再一個一個來詳細討論...
接下來, 我們介紹開於權限給帳號的指令GRANT:
mysql> GRANT 權限 ON 資料庫(或資料表) TO 帳號@主機 IDENTIFIED BY '密碼';
這指令將某物件(資料庫或資料表)的權限賦予帳號...
權限有對資料庫、對資料表和對資料欄三種:
最後, 再離開mysql管理介面時要下個指令:
mysql> FLUSH PRIVILEGES;
這是把剛才的動作做個沖刷的動作, 也就是COMMIT的意思...
今天我分享到這裏, 明天, 我會對權限做更詳細點的介紹...