iT邦幫忙

DAY 4
5

只談MySQL系列 第 4

只談MySQL (第四天) 帳號與權限

  • 分享至 

  • xImage
  •  

MySQL的容易操作, 讓人一直對其權限控管有疑慮. 昨天談到建立資料庫, 簡單一行指令就完成資料庫的建立, 簡單到用過MS-SQL Server及Oracle的資料庫管理者, 不禁懷疑起MySQL的資訊安全是否有問題? 還能於到Internet上網眾駭客玩?
今天, 我們先來談談MySQL下的帳號與權限的指令, 至於如何控管, 留到更深入探究MySQL的安全防能力時再來討論.
同樣的, 打開"Konsole"或"Terminal"(在Linxu左上角的[Applications]->[System Tools]中)
$ su - <<進入系統管理者帳號>>

mysql -u root -p密碼

為了建立帳號, 還是進入系統資料庫中, 前天在變更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 '密碼';
這指令將某物件(資料庫或資料表)的權限賦予帳號...
權限有對資料庫、對資料表和對資料欄三種:

  1. 對資料庫:
    ALL PRIVILEGES、ALTER、CREATE、DELETE、DROP、FILE、INDEX、INSERT、
    PROCESS、REFERENCES、RELOAD、SELECT、SHUTDOWN、UPDATE、USAGE
    共15個, 比前面多了一個"ALL PRIVILEGE"(就是包含全部權限在內)
  2. 對資料表:
    SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER
    共八個
  3. 對資料欄:
    SELECT、INSERT、UPDATE
    只有三個
    例如, 昨天以root帳建立了一個資料庫"ShopMall", 資料庫建立者(或稱擁有者)就已預設有資料庫全部權限了...這時, 想讓帳號simon成為"ShopMall"的共同管理者(擁有者), 可以:
    mysql> GRANT ALL PRIVILEGE ON ShopMall TO simon@localhost INDENTIFIED BY '密碼'
    這樣就讓simon也'擁有"ShopMall"的權限了..
    要移權限, 用REVOKE指令:
    mysql> REVOKE 權限 ON 資料庫(或資料表) FROM 帳號@主機 IDENTIFIED BY '密碼';
    例如, simon被解除任務, 不用再全權管理資料庫"ShopMall"了, 可以
    mysql> REVOKE ALL PRIVILEGE ON ShopMall FROM simon@localhost INDETIFIED BY '密碼';
    這樣, 帳號simon就不再有任何對資料庫"ShopMall"的權限了.

最後, 再離開mysql管理介面時要下個指令:
mysql> FLUSH PRIVILEGES;
這是把剛才的動作做個沖刷的動作, 也就是COMMIT的意思...

今天我分享到這裏, 明天, 我會對權限做更詳細點的介紹...


上一篇
只談MySQL (第三天) 建立資料庫...
下一篇
只談MySQL (第五天) 再談權限...
系列文
只談MySQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言