mysql創(chuàng)建用戶(hù), 并配置一個(gè)庫(kù)的所有權(quán)限
在MySQL中,創(chuàng)建用戶(hù)并為其授予某個(gè)庫(kù)的所有權(quán)限,可以按照以下步驟操作:?
??????? 1.登錄MySQL服務(wù)器。
mysql -u root -p
??????? 2.創(chuàng)建新用戶(hù)。
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password';
其中,new_user是新用戶(hù)的名稱(chēng),localhost是該用戶(hù)的登錄主機(jī),user_password是該用戶(hù)的密碼。
其中: MySQL中的"localhost"和"%"都是用來(lái)指定MySQL允許訪問(wèn)服務(wù)器的主機(jī)名。但是,它們之間存在一些重要的區(qū)別:
- “l(fā)ocalhost"只允許本地連接,而”%"允許所有IP地址都可以連接到服務(wù)器。
- 在安全性方面,“l(fā)ocalhost"比”%“更安全,因?yàn)樗辉试S本地用戶(hù)連接到MySQL服務(wù)器,而”%"可能會(huì)允許外部用戶(hù)連接,從而增加了安全風(fēng)險(xiǎn)。
- “l(fā)ocalhost"是默認(rèn)的主機(jī)名,所以通常不需要指定,而”%"需要明確指定才能允許所有主機(jī)的連接。
????????綜上所述,“l(fā)ocalhost"和”%“都有各自的優(yōu)點(diǎn)和缺點(diǎn),具體使用應(yīng)根據(jù)具體情況和需要進(jìn)行選擇。如果只允許本地訪問(wèn),建議使用"localhost”,如果需要允許來(lái)自所有主機(jī)的訪問(wèn),則應(yīng)該使用"%"。
??????? 3.授予該用戶(hù)在數(shù)據(jù)庫(kù)中的所有權(quán)限。
GRANT ALL PRIVILEGES ON database_name.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;
????????在這個(gè)語(yǔ)句中,ALL PRIVILEGES授權(quán)了該用戶(hù)在指定數(shù)據(jù)庫(kù)中進(jìn)行所有操作的權(quán)限。database_name.*授權(quán)該用戶(hù)對(duì)指定數(shù)據(jù)庫(kù)的所有表和視圖都具有完全的權(quán)限。FLUSH PRIVILEGES命令用于刷新權(quán)限,以確保MySQL的權(quán)限系統(tǒng)已更新。
????????現(xiàn)在,新用戶(hù)已被創(chuàng)建并被授權(quán)對(duì)指定數(shù)據(jù)庫(kù)的所有表進(jìn)行所有操作。當(dāng)然,如果需要的話(huà),可以調(diào)整授予的具體權(quán)限范圍。
??????? 3.1 權(quán)限的分類(lèi)以及怎么給用戶(hù)賦予不同權(quán)限
????????MySQL有許多種權(quán)限,包括全局權(quán)限、數(shù)據(jù)庫(kù)級(jí)別權(quán)限、表級(jí)別權(quán)限、列級(jí)別權(quán)限等。在MySQL中,可以通過(guò)授權(quán)命令(grant)來(lái)給用戶(hù)不同的權(quán)限。
授權(quán)命令的語(yǔ)法如下:
GRANT privileges ON object TO 'user'@'localhost' [IDENTIFIED BY [PASSWORD] 'password']
其中,privileges表示授權(quán)給用戶(hù)的權(quán)限,object表示將權(quán)限授予的對(duì)象(比如database_name.*),user表示被授權(quán)的用戶(hù),IDENTIFIED BY 'password’表示設(shè)置用戶(hù)密碼(這一步可以省略)。
MySQL中常見(jiàn)的權(quán)限包括:
- ALL PRIVILEGES:擁有所有權(quán)限
- ALTER:修改已經(jīng)存在的表結(jié)構(gòu),但不能修改表名稱(chēng)和刪除表
- CREATE:創(chuàng)建新的數(shù)據(jù)庫(kù)和表
- DELETE:刪除表中的數(shù)據(jù)
- DROP:刪除已經(jīng)存在的數(shù)據(jù)庫(kù)和表
- INSERT:插入新數(shù)據(jù)到表中
- SELECT:從表中選取數(shù)據(jù)
- UPDATE:更新表中的數(shù)據(jù)
例如,通過(guò)以下命令給用戶(hù)’username’授予訪問(wèn)’database_name’庫(kù)中所有表的SELECT和INSERT權(quán)限:
GRANT SELECT, INSERT ON database_name.* TO 'username'@'localhost';
??????? 4.顯示mysql所有用戶(hù)以及權(quán)限
????????在MySQL中,可以使用以下查詢(xún)語(yǔ)句來(lái)查看所有用戶(hù)及其權(quán)限:
SELECT user, host, authentication_string FROM mysql.user;
結(jié)果如下
?該查詢(xún)語(yǔ)句返回三個(gè)列:user表示用戶(hù)名,host表示用戶(hù)所在的主機(jī),authentication_string表示該用戶(hù)的加密密碼或者密碼哈希值。
為了查看每個(gè)用戶(hù)的具體權(quán)限,可以使用以下語(yǔ)句:
SHOW GRANTS FOR 'user_name'@'host_name';
該語(yǔ)句將顯示指定用戶(hù)在特定主機(jī)上授予的權(quán)限。注意,密碼哈希值在授權(quán)語(yǔ)句中是不可見(jiàn)的。
執(zhí)行之后會(huì)出現(xiàn):
+-----------------------------------------------------------------------------------------------+
| Grants for user_name@host_name |
+-----------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user_name'@'host_name' IDENTIFIED BY PASSWORD 'password_hash' |
| GRANT SELECT, INSERT, UPDATE ON `testdb`.* TO 'user_name'@'host_name' |
| GRANT CREATE ON `sampledb`.* TO 'user_name'@'host_name' |
+-----------------------------------------------------------------------------------------------+
例如,上述結(jié)果表明user_name
在host_name
上擁有以下權(quán)限:
- 對(duì)所有的數(shù)據(jù)庫(kù)和所有的表都擁有 USAGE 權(quán)限
- 對(duì)?
testdb
?庫(kù)下的所有表具有?SELECT
、INSERT
?和?UPDATE
?權(quán)限 - 對(duì)?
sampledb
?庫(kù)下的所有表具有?CREATE
?權(quán)限
?
如果想查看所有用戶(hù)的權(quán)限,可以使用以下語(yǔ)句:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-592855.html
SELECT DISTINCT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') AS query FROM mysql.user;
該語(yǔ)句將為每個(gè)用戶(hù)構(gòu)建SHOW GRANTS語(yǔ)句,并將其作為查詢(xún)結(jié)果返回。可以將查詢(xún)結(jié)果拷貝到命令行中執(zhí)行,以查看每個(gè)用戶(hù)的具體權(quán)限。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-592855.html
到了這里,關(guān)于Mysql用戶(hù)創(chuàng)建以及權(quán)限賦予操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!