mysql 8 使用者許可權操作

2022-03-15 21:15:21 字數 3761 閱讀 2655

**:mysql8.0新增使用者和許可權

-- 使用mysql資料庫

use mysql

-- 建立使用者

create user myuser identified by 'mypass';

-- 檢視使用者

select user, host, authentication_string from user where user='myuser';

-- 修改使用者密碼

update user set authentication_string='' where user='myuser';

alter user 'myuser'@'%' identified by 'mypass';

-- 刪除使用者

drop user myuser;

-- 檢視許可權

show grants for myuser;

-- 授予許可權

-- grant all privileges on databasename.tablename to 'user'@'host' identified by 'password';

-- 授予myuser使用者全域性級全部許可權:

grant all privileges on *.* to 'myuser'@'%' identified by 'mypass' with grant option;

-- 授予myuser使用者針對testdb資料庫全部許可權:

grant all privileges on testdb.* to 'myuser'

-- 生效(重新整理許可權)

flush privileges;

-- 撤銷許可權

-- revoke privileges on databasename.tablename from 'username'@'host';

revoke all privileges from myuser;

grant命令說明:

priveleges(許可權列表),可以是all priveleges, 表示所有許可權,也可以是select、update等許可權,多個許可權的名詞,相互之間用逗號分開。

on用來指定許可權針對哪些庫和表。

*.* 中前面的*號用來指定資料庫名,後面的*號用來指定表名。

to 表示將許可權賦予某個使用者,@後面接限制的主機,可以是ip,ip段,網域名稱以及%,%表示任何地方。注意:這裡%有的版本不包括本地,以前碰到過給某個使用者設定了%允許任何地方登入,但是在本地登入不了,這個和版本有關係,遇到這個問題再加乙個localhost的使用者就可以了。

identified by指定使用者的登入密碼,該項可以省略。

with grant option 這個選項表示該使用者可以將自己擁有的許可權授權給別人。注意:經常有人在建立操作使用者的時候不指定with grant option選項導致後來該使用者不能使用grant命令建立使用者或者給其它使用者授權。

備註:可以使用grant重複給使用者新增許可權,許可權疊加,比如你先給使用者新增乙個select許可權,然後又給使用者新增乙個insert許可權,那麼該使用者就同時擁有了select和insert許可權。

授權原則說明:

許可權控制主要是出於安全因素,因此需要遵循一下幾個經驗原則:

a、只授予能滿足需要的最小許可權,防止使用者幹壞事。比如使用者只是需要查詢,那就只給select許可權就可以了,不要給使用者賦予update、insert或者delete許可權。

b、建立使用者的時候限制使用者的登入主機,一般是限制成指定ip或者內網ip段。

c、初始化資料庫的時候刪除沒有密碼的使用者。安裝完資料庫的時候會自動建立一些使用者,這些使用者預設沒有密碼。

d、為每個使用者設定滿足密碼複雜度的密碼。

e、定期清理不需要的使用者。**許可權或者刪除使用者。

**:mysql8.0新增使用者和許可權

-- 使用mysql資料庫

use mysql

-- 建立使用者

create user myuser identified by 'mypass';

-- 檢視使用者

select user, host, authentication_string from user where user='myuser';

-- 修改使用者密碼

update user set authentication_string='' where user='myuser';

alter user 'myuser'@'%' identified by 'mypass';

-- 刪除使用者

drop user myuser;

-- 檢視許可權

show grants for myuser;

-- 授予許可權

-- grant all privileges on databasename.tablename to 'user'@'host' identified by 'password';

-- 授予myuser使用者全域性級全部許可權:

grant all privileges on *.* to 'myuser'@'%' identified by 'mypass' with grant option;

-- 授予myuser使用者針對testdb資料庫全部許可權:

grant all privileges on testdb.* to 'myuser'

-- 生效(重新整理許可權)

flush privileges;

-- 撤銷許可權

-- revoke privileges on databasename.tablename from 'username'@'host';

revoke all privileges from myuser;

grant命令說明:

priveleges(許可權列表),可以是all priveleges, 表示所有許可權,也可以是select、update等許可權,多個許可權的名詞,相互之間用逗號分開。

on用來指定許可權針對哪些庫和表。

*.* 中前面的*號用來指定資料庫名,後面的*號用來指定表名。

to 表示將許可權賦予某個使用者,@後面接限制的主機,可以是ip,ip段,網域名稱以及%,%表示任何地方。注意:這裡%有的版本不包括本地,以前碰到過給某個使用者設定了%允許任何地方登入,但是在本地登入不了,這個和版本有關係,遇到這個問題再加乙個localhost的使用者就可以了。

identified by指定使用者的登入密碼,該項可以省略。

with grant option 這個選項表示該使用者可以將自己擁有的許可權授權給別人。注意:經常有人在建立操作使用者的時候不指定with grant option選項導致後來該使用者不能使用grant命令建立使用者或者給其它使用者授權。

備註:可以使用grant重複給使用者新增許可權,許可權疊加,比如你先給使用者新增乙個select許可權,然後又給使用者新增乙個insert許可權,那麼該使用者就同時擁有了select和insert許可權。

授權原則說明:

許可權控制主要是出於安全因素,因此需要遵循一下幾個經驗原則:

a、只授予能滿足需要的最小許可權,防止使用者幹壞事。比如使用者只是需要查詢,那就只給select許可權就可以了,不要給使用者賦予update、insert或者delete許可權。

b、建立使用者的時候限制使用者的登入主機,一般是限制成指定ip或者內網ip段。

c、初始化資料庫的時候刪除沒有密碼的使用者。安裝完資料庫的時候會自動建立一些使用者,這些使用者預設沒有密碼。

d、為每個使用者設定滿足密碼複雜度的密碼。

e、定期清理不需要的使用者。**許可權或者刪除使用者。

MySQL8 許可權驗證

8.0修改了預設驗證方式,之前使用mysql native password外掛程式,新版使用caching sha2 password 驗證外掛程式兩個外掛程式並不相容,使用8版本之後要留意驗證問題。第一次登入後需要reset password才能操作 flush privileges alter...

mysql8建立不了使用者 mysql8建立使用者

假如是mysql8版本的話,使用 grant all privileges to 使用者 localhost identified by 自定義密碼 會報錯,因為要先建立使用者再進行賦權,不能同時進行 建立使用者 create user 使用者名稱 localhost identified by 密...

mysql8 建立使用者賬號以及賦予使用者許可權

建立使用者並設定密碼 123456 是密碼 create user test localhost identified by 123456 create user test identified by 123456 其中localhost指本地才可連線 可以將其換成 指任意ip都能連線 也可以指定i...