mysql授權 MySQL使用者授權(GRANT)

2021-10-25 14:01:43 字數 3550 閱讀 9172

當成功建立使用者賬戶後,還不能執行任何操作,需要為該使用者分配適當的訪問許可權。可以使用 show grant for 語句來查詢使用者的許可權。

注意:新建立的使用者只有登入 mysql 伺服器的許可權,沒有任何其他許可權,不能進行其他操作。

usage on*.* 表示該使用者對任何資料庫和任何表都沒有許可權。

授予使用者許可權

對於新建的 mysql 使用者,必須給它授權,可以用 grant 語句來實現對新建使用者的授權。

語法格式:

grant

on to

其中的格式:

[ identified ] by [ password ]

[ with grant option]

| max_queries_per_hour

| max_updates_per_hour

| max_connections_per_hour

| max_user_connections

語法說明如下:

1) 可選項。用於指定許可權要授予給表中哪些具體的列。

2) on 子句

用於指定許可權授予的物件和級別,如在 on 關鍵字後面給出要授予許可權的資料庫名或表名等。

3) 用於指定許可權的級別。可以授予的許可權有如下幾組:

列許可權,和表中的乙個具體列相關。例如,可以使用 update 語句更新表 students 中 student_name 列的值的許可權。

表許可權,和乙個具體表中的所有資料相關。例如,可以使用 select 語句查詢表 students 的所有資料的許可權。

資料庫許可權,和乙個具體的資料庫中的所有表相關。例如,可以在已有的資料庫 mytest 中建立新錶的許可權。

使用者許可權,和 mysql 中所有的資料庫相關。例如,可以刪除已有的資料庫或者建立乙個新的資料庫的許可權。

對應地,在 grant 語句中可用於指定許可權級別的值有以下幾類格式:

*:表示當前資料庫中的所有表。

*.*:表示所有資料庫中的所有表。

db_name.*:表示某個資料庫中的所有表,db_name 指定資料庫名。

db_name.tbl_name:表示某個資料庫中的某個表或檢視,db_name 指定資料庫名,tbl_name 指定表名或檢視名。

tbl_name:表示某個表或檢視,tbl_name 指定表名或檢視名。

db_name.routine_name:表示某個資料庫中的某個儲存過程或函式,routine_name 指定儲存過程名或函式名。

to 子句:用來設定使用者口令,以及指定被賦予許可權的使用者 user。若在 to 子句中給系統中存在的使用者指定口令,則新密碼會將原密碼覆蓋;如果許可權被授予給乙個不存在的使用者,mysql 會自動執行一條 create user 語句來建立這個使用者,但同時必須為該使用者指定口令。

grant語句中的的使用說明如下:

1) 授予資料庫許可權時,可以指定為以下值:

select:表示授予使用者可以使用 select 語句訪問特定資料庫中所有表和檢視的許可權。

insert:表示授予使用者可以使用 insert 語句向特定資料庫中所有表新增資料行的許可權。

delete:表示授予使用者可以使用 delete 語句刪除特定資料庫中所有表的資料行的許可權。

update:表示授予使用者可以使用 update 語句更新特定資料庫中所有資料表的值的許可權。

references:表示授予使用者可以建立指向特定的資料庫中的表外來鍵的許可權。

create:表示授權使用者可以使用 create table 語句在特定資料庫中建立新錶的許可權。

alter:表示授予使用者可以使用 alter table 語句修改特定資料庫中所有資料表的許可權。

show view:表示授予使用者可以檢視特定資料庫中已有檢視的檢視定義的許可權。

create routine:表示授予使用者可以為特定的資料庫建立儲存過程和儲存函式的許可權。

alter routine:表示授予使用者可以更新和刪除資料庫中已有的儲存過程和儲存函式的許可權。

index:表示授予使用者可以在特定資料庫中的所有資料表上定義和刪除索引的許可權。

drop:表示授予使用者可以刪除特定資料庫中所有表和檢視的許可權。

create temporary tables:表示授予使用者可以在特定資料庫中建立臨時表的許可權。

create view:表示授予使用者可以在特定資料庫中建立新的檢視的許可權。

execute routine:表示授予使用者可以呼叫特定資料庫的儲存過程和儲存函式的許可權。

lock tables:表示授予使用者可以鎖定特定資料庫的已有資料表的許可權。

all 或 all privileges:表示以上所有許可權。

2) 授予表許可權時,可以指定為以下值:

select:授予使用者可以使用 select 語句進行訪問特定表的許可權。

insert:授予使用者可以使用 insert 語句向乙個特定表中新增資料行的許可權。

delete:授予使用者可以使用 delete 語句從乙個特定表中刪除資料行的許可權。

drop:授予使用者可以刪除資料表的許可權。

update:授予使用者可以使用 update 語句更新特定資料表的許可權。

alter:授予使用者可以使用 alter table 語句修改資料表的許可權。

references:授予使用者可以建立乙個外來鍵來參照特定資料表的許可權。

create:授予使用者可以使用特定的名字建立乙個資料表的許可權。

index:授予使用者可以在表上定義索引的許可權。

all 或 all privileges:所有的許可權名。

3) 授予列許可權時,的值只能指定為 select、insert 和 update,同時許可權的後面需要加上列名列表 column-list。

4) 最有效率的許可權是使用者許可權。

授予使用者許可權時,除了可以指定為授予資料庫許可權時的所有值之外,還可以是下面這些值:

create user:表示授予使用者可以建立和刪除新使用者的許可權。

show databases:表示授予使用者可以使用 show databases 語句檢視所有已有的資料庫的定義的許可權。

【例項】使用 grant 語句建立乙個新的使用者 testuser,密碼為 testpwd。使用者 testuser 對所有的資料有查詢、插入許可權,並授予 grant 許可權。輸入的 sql 語句和執行過程如下所示。

mysql> grant select,insert on *.*

-> to 'testuser'@'localhost'

-> identified by 'testpwd'

-> with grant option;

query ok, 0 rows affected, 1 warning (0.05 sec)

使用 select 語句查詢使用者 testuser 的許可權,如下所示。

mysql> select host,user,select_priv,grant_priv

-> from mysql.user

-> where user='testuser';

| host | user | select_priv | grant_priv |

| localhost | testuser | y | y |

1 row in set (0.01 sec)

mysql 授權 mysql 使用者授權

mysql grant 許可權1,許可權2,許可權n on 資料庫名稱.表名稱 to 使用者名稱 使用者位址 identified by 連線口令 許可權1,許可權2,許可權n代表select,insert,update,delete,create,drop,index,alter,grant,re...

mysql 網路授權工具 mysql給主機授權

grant語句雖然能夠為使用者分配許可權,使用比較方便,但是從安全角度,從增加對系統了解角度,你應該盡量使用直接修改授權表的方法。這樣可以更精確的控制授權,能夠對授權表完全了解,避免因為 grant語句的錯誤,是mysql伺服器的安全性降低。首先進入mysql的命令列 允許位址192.168.0.5...

mysql授權使用者許可權 mysql授權使用者許可權

grant 普通資料使用者,查詢 插入 更新 刪除 資料庫中所有表資料的權利。grant select on testdb.to common user grant insert on testdb.to common user grant update on testdb.to common us...