欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL用戶權(quán)限驗(yàn)證與管理方法詳解

 更新時(shí)間:2018年04月28日 10:36:17   作者:編程人,在天涯  
這篇文章主要介紹了MySQL用戶權(quán)限驗(yàn)證與管理方法,結(jié)合實(shí)例形式詳細(xì)分析了mysql針對(duì)用戶權(quán)限的驗(yàn)證、查看、收回、修改等各種常用操作技巧,需要的朋友可以參考下

本文實(shí)例講述了MySQL用戶權(quán)限驗(yàn)證與管理方法。分享給大家供大家參考,具體如下:

一、Mysql權(quán)限分兩階段驗(yàn)證

1. 服務(wù)器檢查是否允許連接:用戶名、密碼,主機(jī)地址。

2. 檢查每一個(gè)請(qǐng)求是否有權(quán)限實(shí)施。

二、Mysql權(quán)限列表

權(quán)限 權(quán)限級(jí)別 權(quán)限說(shuō)明
create 數(shù)據(jù)庫(kù)、表或索引 創(chuàng)建數(shù)據(jù)庫(kù)、表或索引權(quán)限
drop 數(shù)據(jù)庫(kù)或表 刪除數(shù)據(jù)庫(kù)或表權(quán)限
grant option 數(shù)據(jù)庫(kù)、表或保存的程序 賦予權(quán)限選項(xiàng)
references 數(shù)據(jù)庫(kù)或表 外鍵權(quán)限
alter 更改表,比如添加字段、索引、修改字段等
delete 刪除數(shù)據(jù)權(quán)限
index 索引權(quán)限
insert 插入權(quán)限
select 查詢權(quán)限
update 更新權(quán)限
create view 視圖 創(chuàng)建視圖權(quán)限
show view 視圖 查看視圖權(quán)限
alter routine 存儲(chǔ)過(guò)程 更改存儲(chǔ)過(guò)程權(quán)限
create routine 存儲(chǔ)過(guò)程 創(chuàng)建存儲(chǔ)過(guò)程權(quán)限
execute 存儲(chǔ)過(guò)程 執(zhí)行存儲(chǔ)過(guò)程權(quán)限
file 服務(wù)器主機(jī)上的文件訪問(wèn) 文件訪問(wèn)權(quán)限
create temporary tables 服務(wù)器管理 創(chuàng)建臨時(shí)表權(quán)限
lock tables 服務(wù)器管理 鎖表權(quán)限
create user 服務(wù)器管理 創(chuàng)建用戶權(quán)限
proccess 服務(wù)器管理 查看進(jìn)程權(quán)限
reload 服務(wù)器管理 執(zhí)行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的權(quán)限
replication client 服務(wù)器管理 復(fù)制權(quán)限
replication slave 服務(wù)器管理 復(fù)制權(quán)限
show databases 服務(wù)器管理 查看數(shù)據(jù)庫(kù)權(quán)限
shutdown 服務(wù)器管理 關(guān)閉數(shù)據(jù)庫(kù)權(quán)限
super 服務(wù)器管理 執(zhí)行kill線程權(quán)限

三、Mysql用戶權(quán)限管理操作

1. 權(quán)限查詢:

(1)查看mysql的所有用戶及其權(quán)限:

select * from mysql.user\G;

(格式化顯示)

(2)查看當(dāng)前mysql用戶權(quán)限:

show grants;

(3)查看某個(gè)用戶的權(quán)限:

show grants for 用戶名@主機(jī);

示例:

show grants for root@localhost;

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

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

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

示例:

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

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

示例:

復(fù)制代碼 代碼如下:
insert into mysql.user set user='wujuntian',host='localhost',password=password('123123');

注意:

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

3. Mysql用戶刪除:

drop user '用戶名'@'主機(jī)';

4. Mysql用戶權(quán)限授予:

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

grant指令完整格式:

grant 權(quán)限列表 on 數(shù)據(jù)庫(kù)名.數(shù)據(jù)表名 to '用戶名'@'主機(jī)' identified by '密碼' with grant option;

示例:

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

可使用“*”表示所有數(shù)據(jù)庫(kù)或所有數(shù)據(jù)表,“%”表示任何主機(jī)地址。

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

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

記得授權(quán)后一定要刷新權(quán)限:

flush privileges;

5. Mysql用戶權(quán)限回收:

revoke指令格式:

revoke 權(quán)限列表 on 數(shù)據(jù)庫(kù)名.數(shù)據(jù)表名 from 用戶名@主機(jī);

示例:

revoke select on test.user from wjt@localhost;

注意:

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

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

6. 對(duì)賬戶重命名:

rename user '舊用戶名'@'舊主機(jī)' to '新用戶名'@'新主機(jī)';

示例:

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

7. Mysql用戶密碼修改:

方法一:使用set password命令。

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

示例:

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

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

示例:

復(fù)制代碼 代碼如下:
update mysql.user set password=password('123123') where user='root' and host='localhost';

注意:

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

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

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

示例:

復(fù)制代碼 代碼如下:
grant select on test.user to ajun@localhost identified by '111111' with grant option;

方法四:運(yùn)行mysqladmin腳本文件。

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

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

mysqladmin -u 用戶名 password 新密碼;

(2)用戶已有密碼:

mysqladmin -u 用戶名 -p password 新密碼;

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

注意:

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

8. 忘記密碼登錄mysql:

方法一:

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

mysqld --skip-grant-tables

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

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

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

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

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

Mysql權(quán)限檢查:

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

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。

相關(guān)文章

  • 一文帶你了解Mysql主從同步原理

    一文帶你了解Mysql主從同步原理

    本文主要講解了Mysql主從同步原理,主從同步可以擴(kuò)展數(shù)據(jù)庫(kù)的負(fù)載能力、容錯(cuò)還可以數(shù)據(jù)備份等。想要了解相關(guān)內(nèi)容的朋友可以閱讀這篇文章
    2021-08-08
  • 解決MySQL server has gone away錯(cuò)誤的方案

    解決MySQL server has gone away錯(cuò)誤的方案

    在本篇文章里小編給大家分享的是一篇關(guān)于MySQL server has gone away錯(cuò)誤的解決辦法,有需要的朋友們可以參考下。
    2020-02-02
  • 使用pt-kill根據(jù)一定的規(guī)則來(lái)kill連接的方法

    使用pt-kill根據(jù)一定的規(guī)則來(lái)kill連接的方法

    pt-kill 是一個(gè)優(yōu)秀的kill MySQL連接的一個(gè)工具,是percona toolkit的一部分,在因?yàn)榭臻e連接較多導(dǎo)致超過(guò)最大連接數(shù)、某個(gè)有問(wèn)題的sql導(dǎo)致mysql負(fù)載很高時(shí),都需要將一些連接kill掉,這個(gè)工具主要就是這個(gè)用途
    2016-04-04
  • CentOS下安裝MySQL5.6.10和安全配置教程詳解

    CentOS下安裝MySQL5.6.10和安全配置教程詳解

    這篇文章主要介紹了CentOS下安裝MySQL5.6.10和安全配置教的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • MySQL數(shù)據(jù)庫(kù)列的增刪改實(shí)現(xiàn)方法

    MySQL數(shù)據(jù)庫(kù)列的增刪改實(shí)現(xiàn)方法

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)列的增刪改實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了mysql數(shù)據(jù)庫(kù)針對(duì)列的增加、修改、刪除等相關(guān)操作sql命令及使用技巧,需要的朋友可以參考下
    2019-03-03
  • mysql日常使用中常見(jiàn)報(bào)錯(cuò)大全

    mysql日常使用中常見(jiàn)報(bào)錯(cuò)大全

    MySQL初學(xué)者新安裝好數(shù)據(jù)庫(kù)及使用過(guò)程中經(jīng)常遇到以下幾類錯(cuò)誤,本文給大家詳細(xì)整理并給出完美解決方案,感興趣的朋友跟隨小編一起看看吧
    2023-03-03
  • MySql官方手冊(cè)學(xué)習(xí)筆記2 MySql的模糊查詢和正則表達(dá)式

    MySql官方手冊(cè)學(xué)習(xí)筆記2 MySql的模糊查詢和正則表達(dá)式

    MySQL提供標(biāo)準(zhǔn)的SQL模式匹配,以及擴(kuò)展正則表達(dá)式模式匹配的格式
    2012-10-10
  • MySQL 事務(wù)與鎖機(jī)制詳解及注意事項(xiàng)

    MySQL 事務(wù)與鎖機(jī)制詳解及注意事項(xiàng)

    MySQL 的事務(wù)與鎖機(jī)制共同構(gòu)成了數(shù)據(jù)庫(kù)并發(fā)控制的核心,通過(guò)遵循 ACID 原則和合理設(shè)置事務(wù)隔離級(jí)別,可以有效地保障數(shù)據(jù)的一致性和完整性,這篇文章主要介紹了MySQL 事務(wù)與鎖機(jī)制詳解,需要的朋友可以參考下
    2025-04-04
  • 一文帶你理解慢SQL分析與優(yōu)化

    一文帶你理解慢SQL分析與優(yōu)化

    從系統(tǒng)設(shè)計(jì)角度看,一個(gè)系統(tǒng)從設(shè)計(jì)搭建到數(shù)據(jù)逐步增長(zhǎng),SQL執(zhí)行效率可能會(huì)出現(xiàn)劣化,為繼續(xù)支撐業(yè)務(wù)發(fā)展,我們需要對(duì)慢SQL進(jìn)行分析和優(yōu)化,下面這篇文章主要給大家介紹了關(guān)于慢SQL分析與優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • MySql優(yōu)化之InnoDB,4GB內(nèi)存,多查詢的my.ini中文配置方案詳解

    MySql優(yōu)化之InnoDB,4GB內(nèi)存,多查詢的my.ini中文配置方案詳解

    本文是一個(gè)針對(duì) 4G 內(nèi)存系統(tǒng)(主要運(yùn)行只有 InnoDB 表的 MySQL 并使用幾個(gè)連接數(shù)執(zhí)行復(fù)雜的查詢)的MySQL配置文件方案
    2018-03-03

最新評(píng)論