MySql的使用者許可權

2022-03-12 00:07:46 字數 4708 閱讀 5073

create user用於建立新的mysql賬戶。要使用create user語句,您必須擁有mysql資料庫的全域性create user許可權,或擁有insert許可權。對於每個賬戶,create user會在沒有許可權的mysql.user表中建立一條新記錄。如果賬戶已經存在,則出現錯誤。使用自選的identified by子句,'可以為賬戶設定乙個密碼。user和密碼的設定方法與grant語句一樣。其命令的原型如下:

create user user [identified by [password 'password'] 

[,user [identified by [password'password']]……

create

user

temp identified by

'123456

';

如果存在乙個或是多個賬戶被閒置,應當考慮將其刪除,確保不會用於可能的違法活動。利用drop user命令就能很容易地從許可權表中刪除使用者的所有資訊,即來自所有授權表的賬戶許可權記錄。drop user命令原型如下:

drop user user [,user] ……

ps"drop user不能自動關閉任何開啟的使用者對話;而且,如果使用者有開啟的對話,此時取消使用者,則命令不會生效,直到使用者對話被關閉後才生效。一旦對話被關閉,使用者也被取消,此使用者再次試圖登入時將會失敗。

renameuser語句用於對原有mysql賬戶進行重新命名。renameuser語句的命令原型如下:

rename user old_user to new_user 

[,old_user to new_user] ……

ps:如果舊賬戶不存在或者新賬戶已存在,則會出現錯誤。

grant和revoke命令用來管理訪問許可權,也可以用來建立和刪除使用者,但在mysql5.0.2中可以利用create user和drop user命令更容易地實現這些任務。grant和revoke命令對於誰可以操作伺服器及其內容的各個方面提供了多程度的控制,從誰可以關閉伺服器,到誰可以修改特定表字段中的資訊都能控制。

如果授權表擁有含有mixed-case資料庫或表名稱的許可權記錄,並且lower_case_table_names系統變數已設定,則不能使用revoke撤銷許可權,必須直接操縱授權表。(當lower_case_table_names已設定時,grant將不會建立此類記錄,但是此類記錄可能已經在設定變數之前被建立了。)

授予的許可權可以分為多個層級:

全域性層級適用於乙個給定伺服器中的所有資料庫,這些許可權儲存在mysql.user表中。grant all on *.*和revoke all on *.*只授予和撤銷全域性許可權。

資料庫層級適用於乙個給定資料庫中的所有目標,這些許可權儲存在mysql.db和mysql.host表中。grant all on db_name .*和revoke all on db_name .*只授予和撤銷資料庫許可權。

表層級適用於乙個給定表中的所有列,這些許可權儲存在mysql.tables_priv表中。grant all on db_name.tbl_name和revoke all on db_name.tbl_name只授予和撤銷表許可權。

列層級適用於乙個給定表中的單一列,這些許可權儲存在mysql.columns_priv表中。當使用revoke時,您必須指定與被授權列相同的列。

子程式層級,create routine, alter routine, execute和grant許可權適用於已儲存的子程式,這些許可權可以被授予為全域性層級和資料庫層級;而且,除了create routine外,這些許可權可以被授予為子程式層級,並儲存在mysql.procs_priv表中。

grant

allon

*.*to

user identified by

'123456

'with

grant

option;--

授予使用者名為user、密碼為123456的使用者使用所有資料庫的所有許可權,並允許他向其他人授予這些許可權。

revoke

allprivileges,grant

from

user

;grant usage on books.*

touser identified by

'123456';

--建立乙個沒有任何許可權的常規使用者

grant

select,insert,update,delete,index,alter,create,drop

on books.*

touser;--

為使用者user授予適當的許可權

revoke

alter,create,drop

on books.*

from

user;--

減少許可權

revoke

allon books.*

from

user;--

撤銷所有的許可權

mysql伺服器啟動的時候以及使用grant和revoke語句的時候,伺服器會自動讀取grant表。但是,既然我們知道這些許可權儲存在什麼地方以及它們是如何儲存的,就可以手動修改它們。當手動更新它們的時候,mysql伺服器將不會注意到它們已經被修改了。

我們必須向伺服器指出已經對許可權進行了修改,有3種方法可以實現了這個任務。可以在mysql命令提示符下(必須以管理員的身份登入進入)鍵入如下命令:

flush privileges;

mysqladmin flush-privileges

mysqladmin reload

此後,當使用者下次再連線的時候,系統將檢查全域性級別許可權;當下乙個命令被執行時,將檢查資料庫級別的許可權;而表級別和列級別許可權將在使用者下次請求的時候被檢查。

(1)可以用mysqladmin命令在命令列指定密碼:

mysqladmin -u user_name -h host_name password "newpwd"

mysqladmin -u rootpassword"newpass"

mysqladmin -u rootpasswordoldpass"newpass"

mysqladmin命令重設伺服器為host_name,且使用者名為user_name的使用者的密碼,新密碼為「newpwd」。

(2)通過set password命令設定使用者的密碼:

set password for 'jeffrey'@'localhost'=password('biscuit');

只有以root使用者(可以更新mysql資料庫的使用者)身份登入,才可以更改其他使用者的密碼。如果你沒有以匿名使用者連線,省略for子句便可以更改自己的密碼:

set password=password('biscuit');

(3)在全域性級別下使用grant usage語句(在*.*)指定某個賬戶的密碼,而不影響賬戶當前的許可權:

grant usage on *.* to 'jeffrey'@'localhost' identified by 'biscuit';

(4)在建立新賬戶時建立密碼,要為password列提供乙個具體值:

mysql -uroot -p mysql  --制定use mysql資料庫

insert into user(host, user, password)

values('localhost','jeffrey',password('biscuit'));

flush privileges;

(5)更改已有賬戶的密碼,要應用update語句來設定password列值:

mysql -uroot -p mysql

update user set password=password('bagel')

where host='localhost' and user='francis';

flush privileges;

ps:當使用set password、insert或者update指定賬戶的密碼時,必須用password()函式對它進行加密。(唯一的特例是如果密碼為空,則不需要使用password())。之所以使用password()是因為user表以加密方式儲存密碼,而不是明文。如果採用沒有進行加密的方式設定密碼,連線使用的密碼值將被加密,並同儲存在user表中的密碼進行比較。但是,儲存的值為明文,因此比較將失敗,伺服器拒絕連線。

如果使用grant……identified by語句或mysqladmin password命令設定密碼,它們均會自動加密密碼。在這種情況下,不需要使用password()函式對密碼進行加密。

(1)在管理級別,切忌不能將mysql.user表的訪問許可權授予任何非管理賬戶。

(2)採用下面的命令模式來連線伺服器,以此來隱藏你的密碼。命令如下:

mysql -uroot -p db_name

enter password:********

「*」字元指定輸入密碼的地方,輸入的密碼是不可見的。因為它對其他使用者不可見,與在命令列上指定它相比,這樣進入你的密碼更安全。

(3)如果想要從非互動式方式下執行乙個指令碼呼叫乙個客戶端,就沒有從終端輸入密碼的機會。其最安全的方法是讓客戶端程式提示輸入密碼或在適當保護的選項檔案中指定密碼。

mysql配置使用者許可權 mysql使用者許可權配置

mysql使用者許可權配置 有什麼不對的地方請各位大神多多指教!1,檢視使用者表 mysql select user,password,host from mysql.user user 使用者名稱 password 密碼 加密 host 連線ip 2,開放遠端連線 vim etc mysql ma...

mysql使用者許可權時間 Mysql使用者許可權管理

1.檢視mysql使用者 select user,host,authentication string from mysql.user user host authentication string root localhost root b7d0cf7b6e2f root 127.0.0.1 ro...

mysql使用者和許可權 MySQL使用者及許可權知識梳理

一 賬號使用者賬號mysql使用者賬號組成 user host user 使用者名稱。mysql create user user host identified by pwd 使用者重新命名 mysql rename user old username to new username 刪除使用者 ...