日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 授权与回收权限_MySQL 操作命令梳理(4)-- grant授权和revoke回收权限

發(fā)布時(shí)間:2025/3/15 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 授权与回收权限_MySQL 操作命令梳理(4)-- grant授权和revoke回收权限 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在mysql維護(hù)工作中,做好權(quán)限管理是一個(gè)很重要的環(huán)節(jié)。下面對(duì)mysql權(quán)限操作進(jìn)行梳理:

mysql的權(quán)限命令是grant,權(quán)限撤銷的命令時(shí)revoke;

grant授權(quán)格式:grant 權(quán)限列表 on 庫.表 to 用戶名@'ip' identified by "密碼";

revoke回收權(quán)限格式:revoke 權(quán)限列表 on 庫.表 from 用戶名@'ip';

下面通過一些例子說明:

1.grant授權(quán)

1)grant 普通數(shù)據(jù)用戶,查詢、插入、更新、刪除 數(shù)據(jù)庫中所有表數(shù)據(jù)的權(quán)利。

mysql> grant all on *.* to wang@'192.168.1.150' identified by "password"; //all等同于all privilege,其中的privileges可以省略

mysql> grant all privileges on *.* to wang@'192.168.1.%' identified by "123456"; //192.168.1.%表示一個(gè)網(wǎng)段

mysql> grant insert,select,update,delete,drop,create,alter on huanqiu.* to wang@'%' identified by "123456";

mysql> flush privileges //授權(quán)之后,不要忘記更新權(quán)限表

2.查看權(quán)限

1)查看當(dāng)前用戶下所有的權(quán)限

mysql> show grants;

+----------------------------------------------------------------------------------------------------------------------------------------+

| Grants for root@localhost |

+----------------------------------------------------------------------------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION |

| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |

+----------------------------------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

2)查看指定用戶下的所有權(quán)限

USAGE是默認(rèn)的初始狀態(tài),表示無任何權(quán)限!!

下面表示wang用戶在192.168.1.0/24網(wǎng)段登陸本機(jī)mysql后,對(duì)huanqiu庫下的所有表有insert,update,alter,delete,create,select的操作權(quán)限!

mysql> show grants for wang@'192.168.1.%'; //可以在select user,host,password from mysql.user執(zhí)行結(jié)果中找對(duì)應(yīng)的權(quán)限用戶信息

+---------------------------------------------------------------------------------------------------------------+

| Grants for wang@192.168.1.% |

+---------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'wang'@'192.168.1.%' IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF' |

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON `huanqiu`.* TO 'wang'@'192.168.1.%' |

+---------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

3.revoke撤銷權(quán)限

revoke跟grant語法差不多,只需要把關(guān)鍵字 “to” 換成 “from” 即可,并且revoke語句中不需要跟密碼設(shè)置。

注意:revoke可以回收所有權(quán)限,也可以回收部分權(quán)限。

mysql> revoke all on *.* from wang@'192.168.1.150';

mysql> revoke all privileges on *.* from wang@'192.168.1.%';

mysql> revoke insert,select,update,delete,drop,create,alter on huanqiu.* from wang@'%';

mysql> flush privileges

注意事項(xiàng):

1)grant, revoke用戶權(quán)限后,該用戶只有重新連接MySQL數(shù)據(jù)庫,權(quán)限才能生效。

2)如果想讓授權(quán)的用戶,也可以將這些權(quán)限grant給其他用戶,那么授權(quán)時(shí)需添加選項(xiàng) "grant option"!

如下設(shè)置后,那么這個(gè)wang用戶連接mysql后也可以將這些權(quán)限授予其他用戶。

mysql> grant insert,select,update,alter on huanqiu.* to wang@'%' identified by "123456" with grant option;

-------------------------------------------------------------------------------------------------------------------

mysql授權(quán)表一共涉及到5個(gè)表,分別是user、db、host、tables_priv和columns_priv。

這5張表的內(nèi)容和用途如下:

1)user表

user表列出可以連接服務(wù)器的用戶及其口令,并且它指定他們有哪種全局(超級(jí)用戶)權(quán)限。在user表啟用的任何權(quán)限均是全局權(quán)限,并適用于所有數(shù)據(jù)庫。例如,如果你啟用了DELETE權(quán)限,在這里列出的用戶可以從任何表中刪除記錄,所以在你這樣做之前要認(rèn)真考慮。

2)db表

db表列出數(shù)據(jù)庫,而用戶有權(quán)限訪問它們。在這里指定的權(quán)限適用于一個(gè)數(shù)據(jù)庫中的所有表。

3)host表

host表與db表結(jié)合使用在一個(gè)較好層次上控制特定主機(jī)對(duì)數(shù)據(jù)庫的訪問權(quán)限,這可能比單獨(dú)使用db好些。這個(gè)表不受GRANT和REVOKE語句的影響,所以,你可能發(fā)覺你根本不是用它。

4)tables_priv表

tables_priv表指定表級(jí)權(quán)限,在這里指定的一個(gè)權(quán)限適用于一個(gè)表的所有列。

5)columns_priv表

columns_priv表指定列級(jí)權(quán)限。這里指定的權(quán)限適用于一個(gè)表的特定列。

------------------------------------------------------------------------------------------------------------------

看下面一個(gè)實(shí)例:

給wang用戶授權(quán)的權(quán)限太大了,現(xiàn)在要收回部分權(quán)限,只留給wang用戶select和alter的權(quán)限。

mysql> show grants for wang@'192.168.1.%';

+---------------------------------------------------------------------------------------------------------------+

| Grants for wang@192.168.1.% |

+---------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'wang'@'192.168.1.%' IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF' |

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON `huanqiu`.* TO 'wang'@'192.168.1.%' |

+---------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

mysql> revoke insert,update,delete,create on huanqiu.* from wang@'192.168.1.%';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> show grants for wang@'192.168.1.%';

+---------------------------------------------------------------------------------------------------------------+

| Grants for wang@192.168.1.% |

+---------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'wang'@'192.168.1.%' IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF' |

| GRANT SELECT, ALTER ON `huanqiu`.* TO 'wang'@'192.168.1.%' |

+---------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

發(fā)現(xiàn)revoke回收權(quán)限操作后,只剩下select和alter權(quán)限了。

revoke回收部分權(quán)限,剩下的權(quán)限的密碼保持不變。

這里特別注意下:

如果給一個(gè)用戶設(shè)置的權(quán)限過大,除了上面使用revoke回收部分權(quán)限外,還可以使用grant進(jìn)行權(quán)限修改!

也就是說,grant不僅可以添加權(quán)限,也可以修改權(quán)限(實(shí)際上就是對(duì)同一'用戶名'@'ip'設(shè)置權(quán)限,以覆蓋之前的權(quán)限);

grant修改后的權(quán)限將覆蓋之前的權(quán)限!

那么問題來了:授權(quán)后的密碼是密文形式保存的,如果記不住之前授權(quán)時(shí)的密碼,那么怎樣保證覆蓋后的權(quán)限跟之前的權(quán)限一致?

莫慌!

grant授權(quán)操作中其實(shí)不僅可以設(shè)置明文密碼,也可以設(shè)置密文密碼,如下:

1)grant 權(quán)限列表 on 庫.表.* to 用戶名@'ip' identified by "明文密碼"

2)grant 權(quán)限列表 on 庫.表.* to 用戶名@'ip'identified by password "密文密碼"

也就是說:

在grant重置權(quán)限的時(shí)候可以用查看的密文密碼當(dāng)做新的密碼,然后去覆蓋之前的權(quán)限,這就保證了修改前后的密碼一致!

如上的例子,采用grant的操作如下:

mysql> show grants for wang@'192.168.1.%';

+---------------------------------------------------------------------------------------------------------------+

| Grants for wang@192.168.1.% |

+---------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'wang'@'192.168.1.%' IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF' |

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON `huanqiu`.* TO 'wang'@'192.168.1.%' |

+---------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

mysql> grant alter,select on huanqiu.* to wang@'192.168.1.%' identified by password '*678E2A46B8C71291A3915F92736C080819AD76DF';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> show grants for wang@'192.168.1.%';

+---------------------------------------------------------------------------------------------------------------+

| Grants for wang@192.168.1.% |

+---------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'wang'@'192.168.1.%' IDENTIFIED BY PASSWORD '*678E2A46B8C71291A3915F92736C080819AD76DF' |

| GRANT SELECT, ALTER ON `huanqiu`.* TO 'wang'@'192.168.1.%' |

+---------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

通常開發(fā)同事在讓運(yùn)維同事開通mysql權(quán)限時(shí),他們會(huì)在自己本地mysql里生成一個(gè)密文密碼,然后把這個(gè)密文密碼給運(yùn)維同事,運(yùn)維同事在用這個(gè)密文密碼進(jìn)行授權(quán),

那么授權(quán)的密碼就只有開發(fā)同事自己知道了,其他人都不知道!比較安全的一種做法~

總結(jié)

以上是生活随笔為你收集整理的mysql 授权与回收权限_MySQL 操作命令梳理(4)-- grant授权和revoke回收权限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。