国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

MySQL用戶(hù)權限驗證與管理方法的示例分析

發(fā)布時(shí)間:2021-08-08 19:37 來(lái)源:億速云 閱讀:0 作者:小新 欄目: Mysql 歡迎投稿:712375056

這篇文章給大家分享的是有關(guān)用戶(hù)權限驗證與管理方法的示例分析的內容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

一、Mysql權限分兩階段驗證

1. 檢查是否允許連接:用戶(hù)名、密碼,主機地址。

2. 檢查每一個(gè)請求是否有權限實(shí)施。

二、Mysql權限列表

三、Mysql用戶(hù)權限管理操作

1. 權限查詢(xún):

(1)查看mysql的所有用戶(hù)及其權限:

select * from mysql.user\G;

(格式化顯示)

(2)查看當前mysql用戶(hù)權限:

show grants;

(3)查看某個(gè)用戶(hù)的權限:

show grants for 用戶(hù)名@主機;

示例:

show grants for root@localhost;

2. Mysql用戶(hù)創(chuàng )建:

方法一:使用create user命令創(chuàng )建。

create user '用戶(hù)名'@'主機' identified by '密碼';

示例:

create user 'wjt'@'localhost' identified by 'wujuntian';

方法二:直接向數據表mysql.user中插入一條用戶(hù)記錄。

示例:

復制代碼 代碼如下:

insert into mysql.user set user='wujuntian',host='localhost',password=password('123123');

注意:

使用方法二一定要記得要執行flush privileges刷新權限。其次,mysql5.7以后,mysql.user表的password字段已被authentication_string代替,所以應將“password”改為“authentication_string”,密碼一定要使用password函數加密。

3. Mysql用戶(hù)刪除:

drop user '用戶(hù)名'@'主機';

4. Mysql用戶(hù)權限授予:

剛創(chuàng )建的用戶(hù)默認是沒(méi)有權限的,需要使用grant指令進(jìn)行權限的授予。

grant指令完整格式:

grant 權限列表 on 數據庫名.數據表名 to '用戶(hù)名'@'主機' identified by '密碼' with grant option;

示例:

grant all privileges on *.* to 'wjt'@'localhost' identified by "wujuntian" with grant option;

可使用“*”表示所有數據庫或所有數據表,“%”表示任何主機地址。

可以使用grant重復給用戶(hù)添加權限,進(jìn)行權限疊加。

with grant option:這個(gè)選項表示該用戶(hù)可以將自己擁有的權限授權給別人。

記得授權后一定要刷新權限:

flush privileges;

5. Mysql用戶(hù)權限回收:

revoke指令格式:

revoke 權限列表 on 數據庫名.數據表名 from 用戶(hù)名@主機;

示例:

revoke select on test.user from wjt@localhost;

注意:

其實(shí)GRANT語(yǔ)句在執行的時(shí)候,如果權限表中不存在目標賬號,則創(chuàng )建賬號;如果已經(jīng)存在,則執行權限的新增。

usage權限不能被回收,也就是說(shuō),REVOKE用戶(hù)權限并不能刪除用戶(hù)。

6. 對賬戶(hù)重命名:

rename user '舊用戶(hù)名'@'舊主機' to '新用戶(hù)名'@'新主機';

示例:

rename user 'wujuntian'@'localhost' to 'ajun'@'localhost';

7. Mysql用戶(hù)密碼修改:

方法一:使用set password命令。

set password for '用戶(hù)名'@'主機' = password('新密碼');

示例:

set password for 'root'@'localhost' = password('123456');

方法二:修改mysql.user表中的password(或authentication_string)字段。

示例:

復制代碼 代碼如下:

update mysql.user set password=password('123123') where user='root' and host='localhost';

注意:

此方法一定要執行“flush privileges;”指令刷新權限,否則密碼修改無(wú)法生效。Mysql5.7以后應將“password”改為“authentication_string”。

方法三:使用grant指令在授權時(shí)修改密碼:

grant select on 數據庫名.數據表名 to 用戶(hù)名@主機 identified by '新密碼' with grant option;

示例:

復制代碼 代碼如下:

grant select on test.user to ajun@localhost identified by '111111' with grant option;

方法四:運行mysqladmin腳本文件。

該文件一般在mysql安裝目錄下的bin目錄中。進(jìn)入該目錄,根據一下兩種具體情況輸入命令(只有root用戶(hù)有這個(gè)權限)。

(1)用戶(hù)尚無(wú)密碼:

mysqladmin -u 用戶(hù)名 password 新密碼;

(2)用戶(hù)已有密碼:

mysqladmin -u 用戶(hù)名 -p password 新密碼;

(回車(chē)后會(huì )提示輸入舊密碼,輸入之后即可修改成功。)

注意:

更改密碼時(shí)候一定要使用PASSWORD函數(mysqladmin 和GRANT 兩種方式不用寫(xiě),會(huì )自動(dòng)加上)。

8. 忘記密碼登錄mysql:

方法一:

先停止正在運行的Mysql服務(wù),在命令行窗口進(jìn)入mysql安裝目錄下的bin目錄,在-skip-grant-tables參數下運行mysqld文件(Linux系統運行mysqld_safe文件更安全):

mysqld --skip-grant-tables

這樣可以跳過(guò)Mysql的訪(fǎng)問(wèn)控制,在控制臺以管理員的身份進(jìn)入mysql數據庫。另外再開(kāi)啟一個(gè)命令行窗口,進(jìn)入mysql安裝目錄下的bin目錄,直接輸入:mysql,回車(chē),即可登錄mysql,然后就可以重新設置密碼了(注意:此時(shí)“Mysql用戶(hù)密碼修改”中的四種方法只有第二種方法能使用?。?。設置成功后退出,重啟Mysql服務(wù)。

方法二:修改mysql配置文件my.ini。

其實(shí)原理和方法一一樣,都是利用Mysql提供的--skip-grant-tables參數來(lái)跳過(guò)Mysql的訪(fǎng)問(wèn)控制。打開(kāi)mysql配置文件my.ini,在'[mysqld]'下加入“skip-grant-tables”,保存,重啟Mysql服務(wù),然后就可以不需密碼登錄mysql進(jìn)行密碼修改了。

Mysql中的“mysql”數據庫存儲著(zhù)所有Mysql用戶(hù)的權限信息數據表。當Mysql啟動(dòng)時(shí),所有的權限表內容都被讀進(jìn)內存中,進(jìn)行權限判斷時(shí)直接使用內存中的內容進(jìn)行判斷。用grant、revoke或set password對權限表進(jìn)行的修改會(huì )立即被服務(wù)器注意到,GRANT操作的本質(zhì)就是修改權限表后進(jìn)行權限的刷新。但是如果手工修改權限表,例如使用insert、update、delete等操作權限表的話(huà),應該執行一個(gè)flush privileges命令,該命令會(huì )使服務(wù)器重新讀取權限表內容到內存,從而使修改生效。如果不執行該命令,必須重啟mysql服務(wù)才能生效。所以,最好使用grant、revoke或set password對權限表進(jìn)操作,可以省去執行flush privileges命令的麻煩,而且如果忘了執行這個(gè)命令的話(huà)你會(huì )很抓狂。。。

不僅如此,刪除用戶(hù)、重命名用戶(hù)最好也分別使用drop user、rename user命令進(jìn)行操作,而不要使用delete、update命令進(jìn)行操作。前者不但會(huì )對mysql.user數據表進(jìn)行操作,同時(shí)也會(huì )更新其他權限表的記錄,而后者只會(huì )對mysql.user表的數據進(jìn)行操作,這樣會(huì )出現很多問(wèn)題,因為用戶(hù)的權限信息不僅僅存在于mysql.user表中。比如你使用delete刪除了mysql.user表中的一個(gè)用戶(hù),但是沒(méi)有操作其他權限數據表的話(huà),那么其他權限數據表例如tables_priv中關(guān)于該用戶(hù)的權限記錄還存在著(zhù),下次如果想使用create user命令創(chuàng )建相同名稱(chēng)的用戶(hù)會(huì )失敗,只能使用insert into指令向mysql.user表中插入記錄,或者先把其他權限數據表中與該用戶(hù)名相關(guān)的記錄刪除。使用update命令重命名用戶(hù)也會(huì )出現很大問(wèn)題,重命名后用戶(hù)失去了很多的權限,而其他權限表中關(guān)于原用戶(hù)名的記錄則成了沒(méi)用的記錄,除非你對每一個(gè)權限表都進(jìn)行相同的更新操作,但這很麻煩。所以,使用drop user、rename user吧,一個(gè)命令就可以讓系統自動(dòng)幫你完成所有事情,何樂(lè )而不為呢!

Mysql權限檢查:

mysql 先檢查對大范圍是否有權限,如果沒(méi)有再到小范圍里去檢查。比如:先檢查對這個(gè)數據庫是否有select權限,如果有,就允許執行。如果沒(méi)有,再檢查對表是否有select權限,一直到最細粒度,也沒(méi)有權限,就拒絕執行。因此,粒度控制越細,權限校驗的步驟越多,性能越差。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

黑人大荫蒂高潮视频| 超清纯白嫩大学生无码网站| 国产制服丝袜无码视频| 亚洲AV无码专区国产乱码电影| 好男人社区神马在线观看WWW| 久久久久99精品成人片|