W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在生產(chǎn)環(huán)境中總不能一直“死啃”root管理員。為了保障數(shù)據(jù)庫(kù)系統(tǒng)的安全性,以及讓其他用戶(hù)協(xié)同管理數(shù)據(jù)庫(kù),我們可以在MariaDB數(shù)據(jù)庫(kù)管理系統(tǒng)中為他們創(chuàng)建多個(gè)專(zhuān)用的數(shù)據(jù)庫(kù)管理賬戶(hù),然后再分配合理的權(quán)限,以滿(mǎn)足他們的工作需求。為此,可使用root管理員登錄數(shù)據(jù)庫(kù)管理系統(tǒng),然后按照“CREATE USER 用戶(hù)名@主機(jī)名 IDENTIFIED BY '密碼'; ”的格式創(chuàng)建數(shù)據(jù)庫(kù)管理賬戶(hù)。再次提醒大家,一定不要忘記每條數(shù)據(jù)庫(kù)命令后面的分號(hào)(;)。
MariaDB [(none)]> CREATE USER luke@localhost IDENTIFIED BY 'linuxprobe';
Query OK, 0 rows affected (0.00 sec)
創(chuàng)建的賬戶(hù)信息可以使用select命令語(yǔ)句來(lái)查詢(xún)。下面命令查詢(xún)的是賬戶(hù)luke的主機(jī)名稱(chēng)、賬戶(hù)名稱(chēng)以及經(jīng)過(guò)加密的密碼值信息:
MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> SELECT HOST,USER,PASSWORD FROM user WHERE USER="luke";
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | luke | *55D9962586BE75F4B7D421E6655973DB07D6869F |
+-----------+------+-------------------------------------------+
不過(guò),用戶(hù)luke僅僅是一個(gè)普通賬戶(hù),沒(méi)有數(shù)據(jù)庫(kù)的任何操作權(quán)限。不信的話(huà),可以切換到luke賬戶(hù)來(lái)查詢(xún)數(shù)據(jù)庫(kù)管理系統(tǒng)中當(dāng)前都有哪些數(shù)據(jù)庫(kù)??梢园l(fā)現(xiàn),該賬戶(hù)甚至沒(méi)法查看完整的數(shù)據(jù)庫(kù)列表(剛才使用root賬戶(hù)時(shí)可以查看到3個(gè)數(shù)據(jù)庫(kù)列表):
MariaDB [mysql]> exit
Bye
[root@linuxprobe ~]# mysql -u luke -p
Enter password: 此處輸入luke賬戶(hù)的數(shù)據(jù)庫(kù)密碼
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.35-MariaDB MariaDB Server
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.03 sec)
數(shù)據(jù)庫(kù)管理系統(tǒng)所使用的命令一般都比較復(fù)雜。我們以grant命令為例進(jìn)行說(shuō)明。grant命令用于為賬戶(hù)進(jìn)行授權(quán),其常見(jiàn)格式如表18-1所示。在使用grant命令時(shí)需要寫(xiě)上要賦予的權(quán)限、數(shù)據(jù)庫(kù)及表單名稱(chēng),以及對(duì)應(yīng)的賬戶(hù)及主機(jī)信息。其實(shí),只要理解了命令中每個(gè)字段的功能含義,也就不覺(jué)得命令復(fù)雜難懂了。
表18-1 GRANT命令的常見(jiàn)格式以及解釋
命令 | 作用 |
---|---|
GRANT 權(quán)限 ON 數(shù)據(jù)庫(kù).表單名稱(chēng) TO 用戶(hù)名@主機(jī)名 | 對(duì)某個(gè)特定數(shù)據(jù)庫(kù)中的特定表單給予授權(quán) |
GRANT 權(quán)限 ON 數(shù)據(jù)庫(kù).* TO 用戶(hù)名@主機(jī)名 | 對(duì)某個(gè)特定數(shù)據(jù)庫(kù)中的所有表單給予授權(quán) |
GRANT 權(quán)限 ON . TO 用戶(hù)名@主機(jī)名 | 對(duì)所有數(shù)據(jù)庫(kù)及所有表單給予授權(quán) |
GRANT 權(quán)限1,權(quán)限2 ON 數(shù)據(jù)庫(kù).* TO 用戶(hù)名@主機(jī)名 | 對(duì)某個(gè)數(shù)據(jù)庫(kù)中的所有表單給予多個(gè)授權(quán) |
GRANT ALL PRIVILEGES ON . TO 用戶(hù)名@主機(jī)名 | 對(duì)所有數(shù)據(jù)庫(kù)及所有表單給予全部授權(quán)(需謹(jǐn)慎操作) |
當(dāng)然,賬戶(hù)的授權(quán)工作肯定是需要數(shù)據(jù)庫(kù)管理員來(lái)執(zhí)行的。下面以root管理員的身份登錄到數(shù)據(jù)庫(kù)管理系統(tǒng)中,針對(duì)mysql數(shù)據(jù)庫(kù)中的user表單向賬戶(hù)luke授予查詢(xún)、更新、刪除以及插入等權(quán)限。
劉遄老師特別懂同學(xué)們現(xiàn)在心里想的是什么~哈哈,我起初也覺(jué)得在每條數(shù)據(jù)庫(kù)命令后都要加上;(分號(hào))來(lái)結(jié)束特別的不方便,時(shí)常還會(huì)忘記,但敲的命令多了也就自然習(xí)慣了。授權(quán)操作執(zhí)行后來(lái)查看下luke用戶(hù)的權(quán)限吧:
[root@linuxprobe ~]# mysql -u root -p
Enter password:此處輸入root管理員在數(shù)據(jù)庫(kù)中的密碼
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> GRANT SELECT,UPDATE,DELETE,INSERT ON mysql.user TO luke@localhost;
Query OK, 0 rows affected (0.00 sec)
在執(zhí)行完上述授權(quán)操作之后,我們?cè)俨榭匆幌沦~戶(hù)luke的權(quán)限:
MariaDB [(none)]> SHOW GRANTS FOR luke@localhost;
+-------------------------------------------------------------------------------------------------------------+
| Grants for luke@localhost |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'luke'@'localhost' IDENTIFIED BY PASSWORD '*55D9962586BE75F4B7D421E6655973DB07D6869F' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `mysql`.`user` TO 'luke'@'localhost' |
+-------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
上面輸出信息中顯示賬戶(hù)luke已經(jīng)擁有了針對(duì)mysql數(shù)據(jù)庫(kù)中user表單的一系列權(quán)限了。這時(shí)我們?cè)偾袚Q到賬戶(hù)luke,此時(shí)就能夠看到mysql數(shù)據(jù)庫(kù)了,而且還能看到表單user(其余表單會(huì)因無(wú)權(quán)限而被繼續(xù)隱藏):
[root@linuxprobe ~]# mysql -u luke -p
Enter password:此處輸入luke用戶(hù)在數(shù)據(jù)庫(kù)中的密碼
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.01 sec)
MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> SHOW TABLES;
+-----------------+
| Tables_in_mysql |
+-----------------+
| user |
+-----------------+
1 row in set (0.01 sec)
MariaDB [mysql]> exit
Bye
大家不要心急,我們接下來(lái)會(huì)慢慢學(xué)習(xí)數(shù)據(jù)庫(kù)內(nèi)容的修改方法。當(dāng)前,先切換回root賬戶(hù),移除剛才的授權(quán)。
[root@linuxprobe ~]# mysql -u root -p
Enter password:此處輸入root管理員在數(shù)據(jù)庫(kù)中的密碼
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [(none)]> REVOKE SELECT,UPDATE,DELETE,INSERT ON mysql.user FROM luke@localhost;
Query OK, 0 rows affected (0.00 sec)
可以看到,除了移除授權(quán)的命令(revoke)與授權(quán)命令(grant)不同之外,其余部分都是一致的。這不僅好記而且也容易理解。執(zhí)行移除授權(quán)命令后,再來(lái)查看賬戶(hù)luke的信息:
MariaDB [(none)]> SHOW GRANTS FOR luke@localhost;
+-------------------------------------------------------------------------------------------------------------+
| Grants for luke@localhost |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'luke'@'localhost' IDENTIFIED BY PASSWORD '*55D9962586BE75F4B7D421E6655973DB07D6869F' |
+-------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
出現(xiàn)問(wèn)題?大膽提問(wèn)!
因讀者們硬件不同或操作錯(cuò)誤都可能導(dǎo)致實(shí)驗(yàn)配置出錯(cuò),請(qǐng)耐心再仔細(xì)看看操作步驟吧,不要?dú)怵H~
Linux技術(shù)交流請(qǐng)加A群:560843(滿(mǎn)),B群:340829(推薦),C群:463590(推薦),點(diǎn)此查看全國(guó)群。
*本群特色:通過(guò)口令驗(yàn)證確保每一個(gè)群?jiǎn)T都是《Linux就該這么學(xué)》的讀者,答疑更有針對(duì)性,不定期免費(fèi)領(lǐng)取定制禮品。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: