MySQL是最流行的開(kāi)源關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)涯曲。 MySQL服務(wù)器允許我們創(chuàng)建大量用戶(hù)帳戶(hù)并授予適當(dāng)?shù)臋?quán)限,以便用戶(hù)可以訪(fǎng)問(wèn)和管理數(shù)據(jù)庫(kù)揭芍。本教程介紹如何創(chuàng)建MySQL用戶(hù)帳戶(hù)和授予權(quán)限。在你開(kāi)始之前我們假設(shè)您已經(jīng)在系統(tǒng)上安裝了MySQL或MariaDB服務(wù)器卸例。 如果沒(méi)有称杨,您可以按照以下教程之一輕松安裝它:
所有命令都在MySQL shell中作為管理用戶(hù)(創(chuàng)建用戶(hù)帳戶(hù)并定義其權(quán)限所需的最小權(quán)限是CREATE USER 和 GRANT)或root帳戶(hù)執(zhí)行。
要訪(fǎng)問(wèn)MySQL shell筷转,請(qǐng)鍵入以下命令姑原,并在出現(xiàn)提示時(shí)輸入您的MySQL root用戶(hù)密碼:
mysql -u root -p
如果尚未為MySQL root用戶(hù)設(shè)置密碼,則可以省略-p標(biāo)簽呜舒。
創(chuàng)建一個(gè)新的MySQL用戶(hù)帳戶(hù)
MySQL中的用戶(hù)帳戶(hù)由用戶(hù)名和主機(jī)名部分組成锭汛。
要?jiǎng)?chuàng)建新的MySQL用戶(hù)帳戶(hù),請(qǐng)運(yùn)行以下命令:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
將占位符值newuser替換為您的新用戶(hù)名袭蝗,將占位符值user_password替換為用戶(hù)密碼唤殴。比如:
CREATE USER 'linux'@'localhost' IDENTIFIED BY 'linuxidc.com';
在上面的命令中,hostname部分設(shè)置為localhost到腥,這意味著用戶(hù)只能從localhost(即運(yùn)行MySQL Server的系統(tǒng))連接到MySQL服務(wù)器朵逝。
要授予其他主機(jī)的訪(fǎng)問(wèn)權(quán)限,請(qǐng)使用遠(yuǎn)程計(jì)算機(jī)IP更改主機(jī)名部分(localhost)乡范。 例如配名,要從IP 192.168.12.189的計(jì)算機(jī)授予訪(fǎng)問(wèn)權(quán)限,您將運(yùn)行:
CREATE USER 'newuser'@'192.168.12.189' IDENTIFIED BY 'user_password';
若要?jiǎng)?chuàng)建可以從任何主機(jī)連接的用戶(hù)晋辆,請(qǐng)使用“%”通配符作為主機(jī)部分:
CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';
授予MySQL用戶(hù)帳戶(hù)權(quán)限
可以為用戶(hù)帳戶(hù)授予多種類(lèi)型的權(quán)限渠脉。 您可以在此處找到MySQL支持的完整權(quán)限列表。
最常用的權(quán)限是:
- ALL PRIVILEGES- 授予用戶(hù)帳戶(hù)的所有權(quán)限瓶佳。
- CREATE - 允許用戶(hù)帳戶(hù)創(chuàng)建數(shù)據(jù)庫(kù)和表连舍。
- DROP - 允許用戶(hù)帳戶(hù)刪除數(shù)據(jù)庫(kù)和表。
- DELETE - 允許用戶(hù)帳戶(hù)從特定表中刪除行涩哟。
- INSERT - 允許用戶(hù)帳戶(hù)將行插入特定表索赏。
- SELECT - 允許用戶(hù)帳戶(hù)讀取數(shù)據(jù)庫(kù)。
- UPDATE - 允許用戶(hù)帳戶(hù)更新表行贴彼。
Mysql User表權(quán)限字段說(shuō)明全介紹
字段 | -- |
---|---|
Select_priv | 確定用戶(hù)是否可以通過(guò)SELECT命令選擇數(shù)據(jù)潜腻。 |
Insert_priv | 確定用戶(hù)是否可以通過(guò)INSERT命令插入數(shù)據(jù)。 |
Update_priv | 確定用戶(hù)是否可以通過(guò)UPDATE命令修改現(xiàn)有數(shù)據(jù)器仗。 |
Delete_priv | 確定用戶(hù)是否可以通過(guò)DELETE命令刪除現(xiàn)有數(shù)據(jù)融涣。 |
Create_priv | 確定用戶(hù)是否可以創(chuàng)建新的數(shù)據(jù)庫(kù)和表。 |
Drop_priv | 確定用戶(hù)是否可以刪除現(xiàn)有數(shù)據(jù)庫(kù)和表精钮。 |
Reload_priv | 確定用戶(hù)是否可以執(zhí)行刷新和重新加載MySQL所用各種內(nèi)部緩存的特定命令威鹿,包括日志、權(quán)限轨香、主機(jī)忽你、查詢(xún)和表。 |
Shutdown_priv | 確定用戶(hù)是否可以關(guān)閉MySQL服務(wù)器臂容。在將此權(quán)限提供給root賬戶(hù)之外的任何用戶(hù)時(shí)科雳,都應(yīng)當(dāng)非常謹(jǐn)慎。 |
Process_priv | 確定用戶(hù)是否可以通過(guò)SHOW PROCESSLIST命令查看其他用戶(hù)的進(jìn)程脓杉。 |
File_priv | 確定用戶(hù)是否可以執(zhí)行SELECT INTO OUTFILE和LOAD DATA INFILE命令糟秘。 |
Grant_priv | 確定用戶(hù)是否可以將已經(jīng)授予給該用戶(hù)自己的權(quán)限再授予其他用戶(hù)。例如球散,如果用戶(hù)可以插入尿赚、選擇和刪除foo數(shù)據(jù)庫(kù)中的信息,并且授予了GRANT權(quán)限蕉堰,則該用戶(hù)就可以將其任何或全部權(quán)限授予系統(tǒng)中的任何其他用戶(hù)凌净。 |
References_priv | 目前只是某些未來(lái)功能的占位符;現(xiàn)在沒(méi)有作用嘁灯。 |
Index_priv | 確定用戶(hù)是否可以創(chuàng)建和刪除表索引泻蚊。 |
Alter_priv | 確定用戶(hù)是否可以重命名和修改表結(jié)構(gòu)。 |
Show_db_priv | 確定用戶(hù)是否可以查看服務(wù)器上所有數(shù)據(jù)庫(kù)的名字丑婿,包括用戶(hù)擁有足夠訪(fǎng)問(wèn)權(quán)限的數(shù)據(jù)庫(kù)性雄。可以考慮對(duì)所有用戶(hù)禁用這個(gè)權(quán)限羹奉,除非有特別不可抗拒的原因秒旋。 |
Super_priv | 確定用戶(hù)是否可以執(zhí)行某些強(qiáng)大的管理功能,例如通過(guò)KILL命令刪除用戶(hù)進(jìn)程诀拭,使用SET |
GLOBAL | 修改全局MySQL變量迁筛,執(zhí)行關(guān)于復(fù)制和日志的各種命令。 |
Create_tmp_table_priv | 確定用戶(hù)是否可以創(chuàng)建臨時(shí)表耕挨。 |
Lock_tables_priv | 確定用戶(hù)是否可以使用LOCK TABLES命令阻止對(duì)表的訪(fǎng)問(wèn)/修改细卧。 |
Execute_priv | 確定用戶(hù)是否可以執(zhí)行存儲(chǔ)過(guò)程尉桩。此權(quán)限只在MySQL 5.0及更高版本中有意義。 |
Repl_slave_priv | 確定用戶(hù)是否可以讀取用于維護(hù)復(fù)制數(shù)據(jù)庫(kù)環(huán)境的二進(jìn)制日志文件贪庙。此用戶(hù)位于主系統(tǒng)中蜘犁,有利于主機(jī)和客戶(hù)機(jī)之間的通信。 |
Repl_client_priv | 確定用戶(hù)是否可以確定復(fù)制從服務(wù)器和主服務(wù)器的位置止邮。 |
Create_view_priv | 確定用戶(hù)是否可以創(chuàng)建視圖这橙。此權(quán)限只在MySQL 5.0及更高版本中有意義。關(guān)于視圖的更多信息导披,參見(jiàn)第34章屈扎。 |
Show_view_priv | 確定用戶(hù)是否可以查看視圖或了解視圖如何執(zhí)行。此權(quán)限只在MySQL 5.0及更高版本中有意義撩匕。關(guān)于視圖的更多信息鹰晨,參見(jiàn)第34章。 |
Create_routine_priv | 確定用戶(hù)是否可以更改或放棄存儲(chǔ)過(guò)程和函數(shù)滑沧。此權(quán)限是在MySQL 5.0中引入的并村。 |
Alter_routine_priv | 確定用戶(hù)是否可以修改或刪除存儲(chǔ)函數(shù)及函數(shù)。此權(quán)限是在MySQL 5.0中引入的滓技。 |
Create_user_priv | 確定用戶(hù)是否可以執(zhí)行CREATE USER命令哩牍,這個(gè)命令用于創(chuàng)建新的MySQL賬戶(hù)。 |
Event_priv | 確定用戶(hù)能否創(chuàng)建令漂、修改和刪除事件膝昆。這個(gè)權(quán)限是MySQL 5.1.6新增的。 |
Trigger_priv | 確定用戶(hù)能否創(chuàng)建和刪除觸發(fā)器叠必,這個(gè)權(quán)限是MySQL 5.1.6新增的荚孵。 |
create tablespace | 創(chuàng)建臨時(shí)表空間。 |
以上就是Mysql User表權(quán)限字段說(shuō)明全介紹纬朝。
要為用戶(hù)帳戶(hù)授予特定權(quán)限收叶,可以使用以下語(yǔ)法:
GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';
一些示例如下:
對(duì)特定數(shù)據(jù)庫(kù)上的用戶(hù)帳戶(hù)授予所有權(quán)限:
GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
- 為所有數(shù)據(jù)庫(kù)上的用戶(hù)帳戶(hù)授予所有權(quán)限:
GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
- 通過(guò)數(shù)據(jù)庫(kù)中的特定表格對(duì)用戶(hù)帳戶(hù)的所有權(quán)限:
GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
- 通過(guò)特定數(shù)據(jù)庫(kù)為用戶(hù)帳戶(hù)授予多個(gè)權(quán)限:
GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';;
- 顯示MySQL用戶(hù)帳戶(hù)權(quán)限
要查找授予特定MySQL用戶(hù)帳戶(hù)的權(quán)限,請(qǐng)使用SHOW GRANTS語(yǔ)句:
SHOW GRANTS FOR 'database_user'@'localhost';
+---------------------------------------------------------------------------+| Grants for database_user@localhost |+---------------------------------------------------------------------------+| GRANT USAGE ON . TO 'database_user'@'localhost' || GRANT ALL PRIVILEGES ON database_name
.* TO 'database_user'@'localhost' |+---------------------------------------------------------------------------+2 rows in set (0.00 sec)
撤消MySQL用戶(hù)帳戶(hù)的權(quán)限
從用戶(hù)帳戶(hù)撤消一個(gè)或多個(gè)權(quán)限的語(yǔ)法幾乎與授予權(quán)限時(shí)相同共苛。
例如判没,要通過(guò)特定數(shù)據(jù)庫(kù)撤消用戶(hù)帳戶(hù)的所有權(quán)限,請(qǐng)使用以下命令:
REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
刪除現(xiàn)有的MySQL用戶(hù)帳戶(hù)
要?jiǎng)h除MySQL用戶(hù)帳戶(hù)隅茎,請(qǐng)使用DROP USER語(yǔ)句:
DROP USER 'user'@'localhost'
上面的命令將刪除用戶(hù)帳戶(hù)及其權(quán)限澄峰。
總結(jié)
本教程僅介紹基礎(chǔ)知識(shí),但對(duì)于想要學(xué)習(xí)如何創(chuàng)建新的MySQL用戶(hù)帳戶(hù)和授予權(quán)限的人來(lái)說(shuō)辟犀,它應(yīng)該是一個(gè)很好的開(kāi)端俏竞。
如果您有任何問(wèn)題或反饋,請(qǐng)隨時(shí)發(fā)表評(píng)論。