MySql的用户权限
用戶管理
MySQL數(shù)據(jù)庫(kù)中的表與其他任何關(guān)系表沒有區(qū)別,都可以通過典型的SQL命令修改其結(jié)構(gòu)和數(shù)據(jù)。可以使用GRANT和REVOKE命令。通過這些命令,可以創(chuàng)建和禁用用戶,可以在線授予和撤回用戶訪問權(quán)限。在5.0版本中增加了兩個(gè)新命令:CREATE USER和DROP USER。從而能更容易地增加新用戶、刪除和重命名用戶,還增加了第三個(gè)命令RENAME USER用于重命名現(xiàn)有的用戶。
使用CREATE USER命令創(chuàng)建用戶
CREATE USER用于創(chuàng)建新的MySQL賬戶。要使用CREATE USER語(yǔ)句,您必須擁有mysql數(shù)據(jù)庫(kù)的全局CREATE USER權(quán)限,或擁有INSERT權(quán)限。對(duì)于每個(gè)賬戶,CREATE USER會(huì)在沒有權(quán)限的mysql.user表中創(chuàng)建一條新記錄。如果賬戶已經(jīng)存在,則出現(xiàn)錯(cuò)誤。使用自選的IDENTIFIED BY子句,'可以為賬戶設(shè)置一個(gè)密碼。user和密碼的設(shè)置方法與GRANT語(yǔ)句一樣。其命令的原型如下:
CREATE USER user [IDENTIFIED BY [PASSWORD 'PASSWORD']?[,user [IDENTIFIED BY [PASSWORD'PASSWORD']]……
create user temp identified by '123456';使用DROP USER命令刪除用戶
如果存在一個(gè)或是多個(gè)賬戶被閑置,應(yīng)當(dāng)考慮將其刪除,確保不會(huì)用于可能的違法活動(dòng)。利用DROP USER命令就能很容易地從權(quán)限表中刪除用戶的所有信息,即來自所有授權(quán)表的賬戶權(quán)限記錄。DROP USER命令原型如下:
DROP USER user [,user] ……
ps"DROP USER不能自動(dòng)關(guān)閉任何打開的用戶對(duì)話;而且,如果用戶有打開的對(duì)話,此時(shí)取消用戶,則命令不會(huì)生效,直到用戶對(duì)話被關(guān)閉后才生效。一旦對(duì)話被關(guān)閉,用戶也被取消,此用戶再次試圖登錄時(shí)將會(huì)失敗。
使用RENAME USER命令重命名用戶
RENAMEUSER語(yǔ)句用于對(duì)原有MySQL賬戶進(jìn)行重命名。RENAMEUSER語(yǔ)句的命令原型如下:
RENAME USER old_user TO new_user?[,old_user TO new_user] ……
ps:如果舊賬戶不存在或者新賬戶已存在,則會(huì)出現(xiàn)錯(cuò)誤。
權(quán)限管理
GRANT和REVOKE命令
GRANT和REVOKE命令用來管理訪問權(quán)限,也可以用來創(chuàng)建和刪除用戶,但在MySQL5.0.2中可以利用CREATE USER和DROP USER命令更容易地實(shí)現(xiàn)這些任務(wù)。GRANT和REVOKE命令對(duì)于誰(shuí)可以操作服務(wù)器及其內(nèi)容的各個(gè)方面提供了多程度的控制,從誰(shuí)可以關(guān)閉服務(wù)器,到誰(shuí)可以修改特定表字段中的信息都能控制。
如果授權(quán)表?yè)碛泻衜ixed-case數(shù)據(jù)庫(kù)或表名稱的權(quán)限記錄,并且lower_case_table_names系統(tǒng)變量已設(shè)置,則不能使用REVOKE撤銷權(quán)限,必須直接操縱授權(quán)表。(當(dāng)lower_case_table_names已設(shè)置時(shí),GRANT將不會(huì)創(chuàng)建此類記錄,但是此類記錄可能已經(jīng)在設(shè)置變量之前被創(chuàng)建了。)
授予的權(quán)限可以分為多個(gè)層級(jí):
ps:當(dāng)用戶使用GRANT和REVOKE命令更改用戶權(quán)限后,退出MySQL系統(tǒng),用戶使用新賬戶名登錄MySQL的時(shí)候,可能會(huì)因?yàn)闆]有刷新用戶授權(quán)表而導(dǎo)致登錄錯(cuò)誤。這是因?yàn)樵谟脩粼O(shè)置完賬號(hào)后,只有重新加載授權(quán)表才能使之前設(shè)置的授權(quán)表生效。使用FLUSH PRIVILEGES命令可以重載授權(quán)表。另外,需要注意的是,只有如“root”這樣擁有全部權(quán)限的用戶才可以執(zhí)行此命令。當(dāng)用戶重載授權(quán)表后,退出MySQL后,使用新創(chuàng)建的用戶名即可正常登錄MySQL。
MySQL數(shù)據(jù)庫(kù)安全技術(shù)的常見問題
權(quán)限更改何時(shí)生效
MySQL服務(wù)器啟動(dòng)的時(shí)候以及使用GRANT和REVOKE語(yǔ)句的時(shí)候,服務(wù)器會(huì)自動(dòng)讀取grant表。但是,既然我們知道這些權(quán)限保存在什么地方以及它們是如何保存的,就可以手動(dòng)修改它們。當(dāng)手動(dòng)更新它們的時(shí)候,MySQL服務(wù)器將不會(huì)注意到它們已經(jīng)被修改了。
我們必須向服務(wù)器指出已經(jīng)對(duì)權(quán)限進(jìn)行了修改,有3種方法可以實(shí)現(xiàn)了這個(gè)任務(wù)。可以在MySQL命令提示符下(必須以管理員的身份登錄進(jìn)入)鍵入如下命令:
flush privileges;
mysqladmin flush-privileges
mysqladmin reload
此后,當(dāng)用戶下次再連接的時(shí)候,系統(tǒng)將檢查全局級(jí)別權(quán)限;當(dāng)下一個(gè)命令被執(zhí)行時(shí),將檢查數(shù)據(jù)庫(kù)級(jí)別的權(quán)限;而表級(jí)別和列級(jí)別權(quán)限將在用戶下次請(qǐng)求的時(shí)候被檢查。
設(shè)置賬戶密碼
(1)可以用mysqladmin命令在命令行指定密碼:
mysqladmin -u user_name -h host_name password "newpwd"
mysqladmin -u root?password?"newpass" mysqladmin -u root?password?oldpass?"newpass"mysqladmin命令重設(shè)服務(wù)器為host_name,且用戶名為user_name的用戶的密碼,新密碼為“newpwd”。
(2)通過set password命令設(shè)置用戶的密碼:
set password for 'jeffrey'@'localhost'=password('biscuit');
只有以root用戶(可以更新mysql數(shù)據(jù)庫(kù)的用戶)身份登錄,才可以更改其他用戶的密碼。如果你沒有以匿名用戶連接,省略for子句便可以更改自己的密碼:
set password=password('biscuit');
(3)在全局級(jí)別下使用GRANT USAGE語(yǔ)句(在*.*)指定某個(gè)賬戶的密碼,而不影響賬戶當(dāng)前的權(quán)限:
GRANT USAGE ON *.* TO 'jeffrey'@'localhost' IDENTIFIED BY 'biscuit';
(4)在創(chuàng)建新賬戶時(shí)建立密碼,要為password列提供一個(gè)具體值:
mysql -uroot -p mysql ?--制定use mysql數(shù)據(jù)庫(kù)
INSERT INTO user(Host, User, Password)VALUES('localhost','jeffrey',PASSWORD('biscuit'));
FLUSH PRIVILEGES;
(5)更改已有賬戶的密碼,要應(yīng)用UPDATE語(yǔ)句來設(shè)置password列值:
mysql -uroot -p mysql
UPDATE user SET Password=PASSWORD('bagel')WHERE Host='localhost' AND User='francis';
FLUSH PRIVILEGES;
ps:
使密碼更安全
(1)在管理級(jí)別,切忌不能將mysql.user表的訪問權(quán)限授予任何非管理賬戶。
(2)采用下面的命令模式來連接服務(wù)器,以此來隱藏你的密碼。命令如下:
mysql -uroot -p db_name
Enter password:********
“*”字符指定輸入密碼的地方,輸入的密碼是不可見的。因?yàn)樗鼘?duì)其他用戶不可見,與在命令行上指定它相比,這樣進(jìn)入你的密碼更安全。
(3)如果想要從非交互式方式下運(yùn)行一個(gè)腳本調(diào)用一個(gè)客戶端,就沒有從終端輸入密碼的機(jī)會(huì)。其最安全的方法是讓客戶端程序提示輸入密碼或在適當(dāng)保護(hù)的選項(xiàng)文件中指定密碼。
?
轉(zhuǎn)載于:https://www.cnblogs.com/wade-luffy/p/6046590.html
總結(jié)
以上是生活随笔為你收集整理的MySql的用户权限的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 晚上梦到认识的人是怎么回事
- 下一篇: 匿名函数与闭包