W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
在生產環(huán)境中總不能一直“死啃”root管理員。為了保障數據庫系統的安全性,以及讓其他用戶協同管理數據庫,我們可以在MariaDB數據庫管理系統中為他們創(chuàng)建多個專用的數據庫管理賬戶,然后再分配合理的權限,以滿足他們的工作需求。為此,可使用root管理員登錄數據庫管理系統,然后按照“CREATE USER 用戶名@主機名 IDENTIFIED BY '密碼'; ”的格式創(chuàng)建數據庫管理賬戶。再次提醒大家,一定不要忘記每條數據庫命令后面的分號(;)。
MariaDB [(none)]> CREATE USER luke@localhost IDENTIFIED BY 'linuxprobe';
Query OK, 0 rows affected (0.00 sec)
創(chuàng)建的賬戶信息可以使用select命令語句來查詢。下面命令查詢的是賬戶luke的主機名稱、賬戶名稱以及經過加密的密碼值信息:
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 |
+-----------+------+-------------------------------------------+
不過,用戶luke僅僅是一個普通賬戶,沒有數據庫的任何操作權限。不信的話,可以切換到luke賬戶來查詢數據庫管理系統中當前都有哪些數據庫??梢园l(fā)現,該賬戶甚至沒法查看完整的數據庫列表(剛才使用root賬戶時可以查看到3個數據庫列表):
MariaDB [mysql]> exit
Bye
[root@linuxprobe ~]# mysql -u luke -p
Enter password: 此處輸入luke賬戶的數據庫密碼
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)
數據庫管理系統所使用的命令一般都比較復雜。我們以grant命令為例進行說明。grant命令用于為賬戶進行授權,其常見格式如表18-1所示。在使用grant命令時需要寫上要賦予的權限、數據庫及表單名稱,以及對應的賬戶及主機信息。其實,只要理解了命令中每個字段的功能含義,也就不覺得命令復雜難懂了。
表18-1 GRANT命令的常見格式以及解釋
命令 | 作用 |
---|---|
GRANT 權限 ON 數據庫.表單名稱 TO 用戶名@主機名 | 對某個特定數據庫中的特定表單給予授權 |
GRANT 權限 ON 數據庫.* TO 用戶名@主機名 | 對某個特定數據庫中的所有表單給予授權 |
GRANT 權限 ON . TO 用戶名@主機名 | 對所有數據庫及所有表單給予授權 |
GRANT 權限1,權限2 ON 數據庫.* TO 用戶名@主機名 | 對某個數據庫中的所有表單給予多個授權 |
GRANT ALL PRIVILEGES ON . TO 用戶名@主機名 | 對所有數據庫及所有表單給予全部授權(需謹慎操作) |
當然,賬戶的授權工作肯定是需要數據庫管理員來執(zhí)行的。下面以root管理員的身份登錄到數據庫管理系統中,針對mysql數據庫中的user表單向賬戶luke授予查詢、更新、刪除以及插入等權限。
劉遄老師特別懂同學們現在心里想的是什么~哈哈,我起初也覺得在每條數據庫命令后都要加上;(分號)來結束特別的不方便,時常還會忘記,但敲的命令多了也就自然習慣了。授權操作執(zhí)行后來查看下luke用戶的權限吧:
[root@linuxprobe ~]# mysql -u root -p
Enter password:此處輸入root管理員在數據庫中的密碼
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í)行完上述授權操作之后,我們再查看一下賬戶luke的權限:
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)
上面輸出信息中顯示賬戶luke已經擁有了針對mysql數據庫中user表單的一系列權限了。這時我們再切換到賬戶luke,此時就能夠看到mysql數據庫了,而且還能看到表單user(其余表單會因無權限而被繼續(xù)隱藏):
[root@linuxprobe ~]# mysql -u luke -p
Enter password:此處輸入luke用戶在數據庫中的密碼
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
大家不要心急,我們接下來會慢慢學習數據庫內容的修改方法。當前,先切換回root賬戶,移除剛才的授權。
[root@linuxprobe ~]# mysql -u root -p
Enter password:此處輸入root管理員在數據庫中的密碼
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)
可以看到,除了移除授權的命令(revoke)與授權命令(grant)不同之外,其余部分都是一致的。這不僅好記而且也容易理解。執(zhí)行移除授權命令后,再來查看賬戶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)
出現問題?大膽提問!
因讀者們硬件不同或操作錯誤都可能導致實驗配置出錯,請耐心再仔細看看操作步驟吧,不要氣餒~
Linux技術交流請加A群:560843(滿),B群:340829(推薦),C群:463590(推薦),點此查看全國群。
*本群特色:通過口令驗證確保每一個群員都是《Linux就該這么學》的讀者,答疑更有針對性,不定期免費領取定制禮品。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: