在MySQL中,如何給用戶授予權限


MySQL簡介:

MySQL是一個小型關係型數據庫管理系統,開發者爲瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。而2009年,SUN又被Oracle收購。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內。這樣就增加了速度並提高了靈活性。MySQL的SQL“結構化查詢語言”。SQL是用於訪問數據庫的最常用標準化語言。MySQL軟件採用了GPL(GNU通用公共許可證)。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站爲了降低網站總體擁有成本而選擇了MySQL作爲網站數據庫。

MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。


在數據庫中,我們常見的操作有以下:

操作命令 操作說明
INSERT 允許它們將行插入表中
CREATE 允許他們創建新的表或數據庫
UPDATE 允許他們更新錶行
DELETE 允許他們從表中刪除行
DROP 允許他們刪除表或數據庫
SELECT 允許他們使用該SELECT命令讀取數據庫
GRANT OPTION 允許他們授予或刪除其他用戶的權限
ALL 所有特權,正如我們之前看到的,這將允許MySQL用戶完全訪問指定的數據庫(或者如果沒有選擇數據庫,則跨系統進行全局訪問)

在MySQL中,一般授予用戶的權限有以下五種常見方式:

全局層級權限、數據庫層級權限、表層級別權限、列層級別權限、子程序層級權限。

1.全局層級

全局權限適用於一個給定服務器中的所有數據庫。這些權限存儲在mysql.user表中通常用【grant all on .】來授予全局權限和【revoke all on .】撤銷全局權限。   

2.數據庫層級

數據庫權限適用於一個給定數據庫中的所有目標。這些權限存儲在mysql.db和mysql.host表中。【grant all on db_name .和【 revoke all on db_name .只授予和撤銷數據庫權限。   

3.表層級

表權限適用於一個給定表中的所有列。這些權限存儲在mysql.tables_priv表中。【grant all on db_name.tbl_name.】和【revoke all on db_name.tbl_name.】只授予和撤銷表權限。

4.列層級

列權限適用於一個給定表中的單一列。這些權限存儲在mysql.columns_priv表中。當使用revoke時,您必須指定與被授權列相同的列。

5.子程序層級

create routine, alter routine, execute 和 grant權限適用於已存儲的子程序。這些權限可以被授予爲全局層級和數據庫層級。而且,除了CREATE ROUTINE外,這些權限可以被授予爲子程序層級,並存儲在mysql.procs_priv表中。

具體操作:

1.創建用戶【create user 'newuser'@'localhost' identifed by 'password';

我們指定新用戶【newuser】的主機爲localhost而不是服務器的IP地址。localhost只是一個主機名,意思是“這臺計算機”,MySQL專門處理這個特定的主機名:當有該主機的用戶登錄MySQL時,它將嘗試使用Unix套接字文件連接到本地服務器。因此,localhost通常在計劃通過SSH連接到服務器或運行本地mysql客戶端連接到本地MySQL服務器時使用。

此時,剛建好的新用戶【newuser】對數據庫是沒有任何的執行操作權限;因此,首先要做的就是爲新用戶提供他們所需的訪問權限。

2.給用戶授權【grant 權限 privileges on *.* to 'newuser'@'localhost';

此命令中的星號指的是新用戶【newuser】可以訪問的數據庫和表(分別)

權限若是寫的 all 則表示:允許用戶讀取,寫入,執行 所有數據庫和表的權限;此權限相當於root的訪問權限,但對於大多數用例來說可能是不切實際的,並且可能會使您的數據庫的安全性處於高風險。

PS:一條授權命令可以配置多個權限,權限之間用英文逗號隔開:

grant update, selcet on [數據庫名字].[數據表名字] to [用戶名]@'localhost';

如果您需要撤消權限,則語法結構幾乎與授予權限基本相同:

        只是將grant 修改爲  revoke ;將 to 修改爲  from

revoke delete on database_name.table_name from 'newuser'@'localhost';

3.每次更新或更改權限時,請務必使用“刷新權限”命令【flush privileges;

4.查看用戶的當前權限:【show gaants newuser;


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章