mysql 角色管理_MySQL 8 用户和角色管理入门
MySQL 8.0 正式版目前已發布,MySQL 8.0 增加了很多新的功能,具體可參考「MySQL 8.0 正式版 8.0.11 發布!」一文。
MySQL 8.0 在用戶管理方面增加了角色管理,默認的密碼加密方式也做了調整,由之前的?SHA1?改為了?SHA2。同時加上 MySQL 5.7 的禁用用戶和用戶過期的功能,MySQL 在用戶管理方面的功能和安全性都較之前版本大大的增強了。
在本教程中,我們將介紹 MySQL 下用戶管理上的一些新特性和如何使用角色來簡化權限管理。
注:本教程大部分特性要 MySQL 8.0 + 以上版本才支持。
MySQL 用戶管理
驗證插件和密碼加密方式的變化
在 MySQL 8.0 中,caching_sha2_password?是默認的身份驗證插件而不是之前版本的?mysql_native_password,默認的密碼加密方式是?SHA2?。
mysql> show variables like 'default_authentication_plugin';
+-------------------------------+-----------------------+
| Variable_name ? ? ? ? ? ? ? ? | Value ? ? ? ? ? ? ? ? |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
1 row in set (0.00 sec)
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user ? ? ? ? ? ? | host ? ? ?| plugin ? ? ? ? ? ? ? ?|
+------------------+-----------+-----------------------+
| root ? ? ? ? ? ? | % ? ? ? ? | caching_sha2_password |
| mysql.infoschema | localhost | mysql_native_password |
| mysql.session ? ?| localhost | mysql_native_password |
| mysql.sys ? ? ? ?| localhost | mysql_native_password |
| root ? ? ? ? ? ? | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
如果需要保持之前的驗證方式并保持之前版本的密碼加密方式需要在配置文件 my.cnf 中修改以下配置項并重啟服務后生效。
[mysqld]
default_authentication_plugin = mysql_native_password
注:此選項暫不支持 MySQL 8.0 動態修改特性。
將 MySQL 8.0 中已有的?SHA2?密碼修改為?SHA1?的模式。
# 更新用戶的密碼加密方式為之前版本的方式
mysql> ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'password';
# 刷新權限
mysql> FLUSH PRIVILEGES;
注:如果沒有特殊的原因,建議使用更安全的新加密方式。
用戶授權和修改密碼
MySQL 8.0 的用戶授權語句和之前版本有所區別,老版本的常用授權語句在 MySQL 8.0 版本中 已不能使用,如使用舊版本授權語句會報錯。
在 MySQL 8.0 用之前版本授權語句創建用戶。
mysql> GRANT ALL PRIVILEGES ON *.* TO `mike`@`%` IDENTIFIED BY '000000' WITH GRANT OPTION;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '000000' WITH GRANT OPTION' at line 1
在 MySQL 8.0 版本中正確授權語句。
mysql> CREATE USER 'mike'@'%' IDENTIFIED BY '000000';
mysql> GRANT ALL ON *.* TO 'mike'@'%' WITH GRANT OPTION;
密碼過期時間管理
MySQL 從 5.6.6 開始引入密碼自動過期的新功能,并在 MySQL 5.7.4 版本中改進了用戶密碼過期時間這個特性。現在可以通過一個全局變量?default_password_lifetime?來設置一個全局的自動密碼過期策略。
default_password_lifetime?其默認值為 0,表示禁用自動密碼過期。default_password_lifetime?的值如是是正整數 N ,則表示允許的設置密碼生存周期 為 N,單位為天 。
default_password_lifetime?全局密碼到期策略默認為永久,不過期。
mysql> show variables like 'default_password_lifetime';
+---------------------------+-------+
| Variable_name ? ? ? ? ? ? | Value |
+---------------------------+-------+
| default_password_lifetime | 0 ? ? |
+---------------------------+-------+
1 row in set (0.00 sec)
如果你要建立一個全局策略,讓所有用戶的密碼的使用期限為六個月,可在服務端配置文件 my.cnf 中修改?default_password_lifetime?配置項的值為 180。
[mysqld]
default_password_lifetime=180
如果你要恢復全局策略,讓所有用戶的密碼永不過期,可在服務端配置文件 my.cnf 中修改?default_password_lifetime?配置項的值為 0。
[mysqld]
default_password_lifetime=0
default_password_lifetime?參數是支持永久動態設置的,你也可以用以下命令在 MySQL 命令行下直接設置生效。
# 設置默認密碼過期策略為 180 天后過期
mysql> SET PERSIST default_password_lifetime = 180;
# 設置默認密碼過期策略為永不過期
mysql> SET PERSIST default_password_lifetime = 0;
# MySQL 8.0 永久動態修改參數會保存在配置文件 mysqld-auto.cnf 中,保存的格式為JSON串。
$ cat ?/var/lib/mysql/mysqld-auto.cnf
{ "Version" : 1 , "mysql_server" : { "default_password_lifetime" : { "Value" : "180" , "Metadata" : { "Timestamp" : 1525663928688419 , "User" : "root" , "Host" : "" } } } }
創建和修改帶有密碼過期時間的用戶示例
創建或修改一個用戶的密碼過期時間為 90 天。
mysql> CREATE USER 'mike'@'%' IDENTIFIED BY '000000' PASSWORD EXPIRE INTERVAL 90 DAY;
mysql> ALTER USER `mike`@`%` PASSWORD EXPIRE INTERVAL 90 DAY;
創建或修改一個用戶的密碼過期時間為永不過期。
mysql> CREATE USER 'mike'@'%' PASSWORD EXPIRE NEVER;
mysql> ALTER USER 'mike'@'%' PASSWORD EXPIRE NEVER;
創建或修改一個遵循全局到期策略的用戶。
mysql> CREATE USER 'mike'@'%' PASSWORD EXPIRE DEFAULT;
mysql> ALTER USER 'mike'@'%' PASSWORD EXPIRE DEFAULT;
查看用戶的密碼過期時間。
mysql> select user,host,password_last_changed,password_lifetime,password_expired from mysql.user;
+------------------+-----------+-----------------------+-------------------+------------------+
| user ? ? ? ? ? ? | host ? ? ?| password_last_changed | password_lifetime | password_expired |
+------------------+-----------+-----------------------+-------------------+------------------+
| mike ? ? ? ? ? ? | % ? ? ? ? | 2018-05-07 11:13:39 ? | ? ? ? ? ? ? ? ?90 | N ? ? ? ? ? ? ? ?|
| root ? ? ? ? ? ? | % ? ? ? ? | 2018-05-04 16:46:05 ? | ? ? ? ? ? ? ?NULL | N ? ? ? ? ? ? ? ?|
| mysql.infoschema | localhost | 2018-05-04 16:45:55 ? | ? ? ? ? ? ? ?NULL | N ? ? ? ? ? ? ? ?|
| mysql.session ? ?| localhost | 2018-05-04 16:45:55 ? | ? ? ? ? ? ? ?NULL | N ? ? ? ? ? ? ? ?|
| mysql.sys ? ? ? ?| localhost | 2018-05-04 16:45:55 ? | ? ? ? ? ? ? ?NULL | N ? ? ? ? ? ? ? ?|
| root ? ? ? ? ? ? | localhost | 2018-05-04 16:46:05 ? | ? ? ? ? ? ? ?NULL | N ? ? ? ? ? ? ? ?|
+------------------+-----------+-----------------------+-------------------+------------------+
6 rows in set (0.00 sec)
鎖定/解鎖用戶帳戶
從 MySQL 5.7.8 開始,用戶管理方面添加了鎖定/解鎖用戶帳戶的新特性。下面我們就來看下這個特性的一些具體示例。
創建一個帶帳戶鎖的用戶
mysql> CREATE USER 'mike-temp1'@'%' IDENTIFIED BY '000000' ACCOUNT LOCK;
接下來嘗試用新創建的用戶登陸,此時會得到一個 ERROR 3118 錯誤消息提示。
$ mysql -umike-temp1 -p000000
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 3118 (HY000): Access denied for user 'mike-temp1'@'172.22.0.1'. Account is locked.
如果你需要解鎖此用戶,此時就需要使用以下語句對其進行解鎖了。
mysql> ALTER USER 'mike-temp1'@'%' ACCOUNT UNLOCK;
Query OK, 0 rows affected (0.00 sec)
現在,這個用戶就已經解鎖,再次嘗試登陸。
$ mysql -umike-temp1 -p000000
Welcome to the MySQL monitor. ?Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.11 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
修改一個用戶為鎖定狀態
如果用戶已建立,你也可以這樣鎖定用戶帳戶。
mysql> ALTER USER 'mike'@'%' ACCOUNT LOCK;
Query OK, 0 rows affected (0.00 sec)
設置 MySQL 用戶密碼重用策略
從 MySQL 8.0 開始允許限制重復使用以前的密碼??梢愿鶕艽a更改次數、已用時間或兩者來建立密碼重用限制。帳戶的密碼歷史由過去分配的密碼組成,MySQL 可以限制從此歷史記錄中選擇新密碼。
如果根據密碼更改次數限制帳戶,則無法從指定數量的最新密碼中選擇新密碼。例如:如果密碼更改的最小數量設置為 3,則新密碼不能與任何最近的3個密碼相同。
如果根據密碼修改時間來限制帳戶,則無法將指定時間歷史記錄中的密碼中選擇為新密碼。例如:如果密碼重用間隔設置為 60,則新密碼不得在最近 60 天內選擇的密碼相同。
注:空密碼不記錄在密碼歷史記錄中,并隨時可以重復使用。
要建立全局密碼重用策略,可修改?password_history?和?password_reuse_interval?系統變量。該變量可在服務配置文件 my.cnf 中配置,以禁止重復使用最近 6 個密碼或最近 180 天內使用過的任何密碼為例。
[mysqld]
password_history=6
password_reuse_interval=180
該參數是支持永久動態設置,也可以直接用下面語句進行設置。
mysql> SET PERSIST password_history = 6;
mysql> SET PERSIST password_reuse_interval = 180;
MySQL 角色管理
MySQL 數據庫中通常都會出現多個擁有相同權限集合的用戶,在之前版本中只有分別向多個用戶授予和撤銷權限才能實現單獨更改每個用戶的權限。在用戶數量比較多的時候,這樣的操作是非常耗時的。
MySQL 8.0 為了用戶權限管理更容易,提供了一個角色管理的新功能。角色是指定的權限集合,和用戶帳戶一樣可以對角色進行權限的授予和撤消。如果用戶被授予角色權限,則該用戶擁有該角色的權限。
MySQL 8.0 提供的角色管理功能如下:
CREATE ROLE 角色創建
DROP ROLE 角色刪除
GRANT 為用戶和角色分配權限
REVOKE 為用戶和角色撤銷權限
SHOW GRANTS 顯示用戶和角色的權限
SET DEFAULT ROLE 指定哪些帳戶角色默認處于活動狀態
SET ROLE 更改當前會話中的活動角色
CURRENT_ROLE() 顯示當前會話中的活動角色
創建角色并授予用戶角色權限
這里我們以幾種常見場景為例。
應用程序需要讀/寫權限。
運維人員需要完全訪問數據庫。
部分開發人員需要讀取權限。
部分開發人員需要讀寫權限。
如果要向多個用戶授予相同的權限集,則應按如下步驟來進行。
創建新的角色
授予角色權限
授予用戶角色
首先,我們創建四個角色。為了清楚區分角色的權限,建議將角色名稱命名得比較直觀。
mysql> CREATE ROLE 'app', 'ops', 'dev_read', 'dev_write';
注:角色名稱格式類似于由用戶和主機部分組成的用戶帳戶,如:role_name@host_name。如果省略主機部分,則默認為 “%”,表示任何主機。
創建好角色后,我們就給角色授予對應的權限。要授予角色權限,您可以使用?GRANT?語句。
# 以下語句是向 app 角色授予 wordpress 數據庫的讀寫權限
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON wordpress.* TO 'app';
# 以下語句是向 ops 角色授予 wordpress 數據庫的所有權限
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'ops';
# 以下語句是向 dev_read 角色授予 wordpress 數據庫的只讀權限
mysql> GRANT SELECT ON wordpress.* TO 'dev_read';
# 以下語句是向 dev_write 角色授予 wordpress 數據庫的寫權限
mysql> GRANT INSERT, UPDATE, DELETE ON wordpress.* TO 'dev_write';
注:這里假定需授權的數據庫名稱為 wordpress。
最后根據實際情況,我們將指定用戶加入到對應的角色。假設需要一個應用程序使用的帳戶、一個運維人員帳戶、一個是開發人員只讀帳戶和兩個開發人員讀寫帳戶。
創建新用戶
# 應用程序帳戶
mysql> CREATE USER 'app01'@'%' IDENTIFIED BY '000000';
# 運維人員帳戶
mysql> CREATE USER 'ops01'@'%' IDENTIFIED BY '000000';
# 開發人員只讀帳戶
mysql> CREATE USER 'dev01'@'%' IDENTIFIED BY '000000';
# 開發讀寫帳戶
mysql> CREATE USER 'dev02'@'%' IDENTIFIED BY '000000';
mysql> CREATE USER 'dev03'@'%' IDENTIFIED BY '000000';
給用戶分配角色
mysql> GRANT app TO 'app01'@'%';
mysql> GRANT ops TO 'ops01'@'%';
mysql> GRANT dev_read TO 'dev01'@'%';
如果要將多個用戶同時加入多個角色,可以使用類似語句。
mysql> GRANT dev_read, dev_write TO 'dev02'@'%', 'dev03'@'%';
檢查角色權限
要驗證角色是否正確分配,可以使用?SHOW GRANTS?語句。
mysql> SHOW GRANTS FOR 'dev01'@'%';
+-------------------------------------+
| Grants for dev01@% ? ? ? ? ? ? ? ? ?|
+-------------------------------------+
| GRANT USAGE ON *.* TO `dev01`@`%` ? |
| GRANT `dev_read`@`%` TO `dev01`@`%` |
+-------------------------------------+
2 rows in set (0.00 sec)
正如你所看到的,和之前版本不同的是?SHOW GRANTS?只返回授予角色。如果要顯示角色所代表的權限,需要加上?USING?子句和授權角色的名稱。
mysql> SHOW GRANTS FOR 'dev01'@'%' USING dev_read;
+----------------------------------------------+
| Grants for dev01@% ? ? ? ? ? ? ? ? ? ? ? ? ? |
+----------------------------------------------+
| GRANT USAGE ON *.* TO `dev01`@`%` ? ? ? ? ? ?|
| GRANT SELECT ON `wordpress`.* TO `dev01`@`%` |
| GRANT `dev_read`@`%` TO `dev01`@`%` ? ? ? ? ?|
+----------------------------------------------+
3 rows in set (0.00 sec)
設置默認角色
現在,如果您使用 dev01 用戶帳戶連接到 MySQL,并嘗試訪問 wordpress 數據庫會出現以下錯誤。
$ mysql -u dev01 -p000000
Welcome to the MySQL monitor. ?Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.11 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use wordpress;
ERROR 1044 (42000): Access denied for user 'dev01'@'%' to database 'wordpress'
這是因為在向用戶帳戶授予角色后,當用戶帳戶連接到數據庫服務器時,它并不會自動使角色變為活動狀態。
# 調用 CURRENT_ROLE() 函數查看當前角色。
mysql> SELECT current_role();
+----------------+
| current_role() |
+----------------+
| NONE ? ? ? ? ? |
+----------------+
1 row in set (0.00 sec)
這里返回 NONE,就意味著當前沒有啟用任何角色。要在每次用戶帳戶連接到數據庫服務器時指定哪些角色應該處于活動狀態,需用使用?SET DEFAULT ROLE?語句來指定。
# 以下語句將把 dev01 帳戶分配的所有角色都設置為默認值。
mysql> SET DEFAULT ROLE ALL TO 'dev01'@'%';
再次使用 dev01 用戶帳戶連接到 MySQL 數據庫服務器并調用?CURRENT_ROLE()?函數,您將看到 dev01 用戶帳戶的默認角色。
$ mysql -u dev01 -p000000
Welcome to the MySQL monitor. ?Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.11 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
# 查看 dev01 用戶帳戶的默認角色。
mysql> SELECT current_role();
+----------------+
| current_role() |
+----------------+
| `dev_read`@`%` |
+----------------+
1 row in set (0.00 sec)
最后通過將當前數據庫切換到 wordpress 數據庫,并執行?SELECT?語句和?DELETE?語句來測試 dev01 帳戶的權限。
mysql> use wordpress;
Database changed
mysql> select ?count(*) from wp_terms;
+----------+
| count(*) |
+----------+
| ? ? ?357 |
+----------+
1 row in set (0.00 sec)
mysql> DELETE from wp_terms;
ERROR 1142 (42000): DELETE command denied to user 'dev01'@'172.22.0.1' for table 'wp_terms'
如上面結果所示,當我們發出?DELETE?語句時,就收到一個錯誤。因為 dev01 用戶帳戶只有讀取訪問權限。
設置活動角色
用戶帳戶可以通過指定哪個授權角色處于活動狀態來修改當前用戶在當前會話中的有效權限。
將活動角色設置為 NONE,表示沒有活動角色。
mysql> SET ROLE NONE;
將活動角色設置為所有授予的角色。
mysql> SET ROLE ALL;
將活動角色設置為由?SET DEFAULT ROLE?語句設置的默認角色。
mysql> SET ROLE DEFAULT;
同時設置多個活動的角色。
mysql> SET ROLE granted_role_1, granted_role_2, ...
撤消角色或角色權限
正如可以授權某個用戶的角色一樣,也可以從用戶帳戶中撤銷這些角色。要從用戶帳戶中撤銷角色需要使用?REVOKE?語句。
mysql> REVOKE role FROM user;
REVOKE?也可以用于修改角色權限。這不僅影響角色本身權限,還影響任何授予該角色的用戶權限。假設想臨時讓所有開發用戶只讀,可以使用?REVOKE?從 dev_write 角色中撤消修改權限。我們先來看下用戶帳戶 dev02 撤消前的權限。
mysql> SHOW GRANTS FOR 'dev02'@'%' USING 'dev_read', 'dev_write';
+----------------------------------------------------------------------+
| Grants for dev02@% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `dev02`@`%` ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
| GRANT SELECT, INSERT, UPDATE, DELETE ON `wordpress`.* TO `dev02`@`%` |
| GRANT `dev_read`@`%`,`dev_write`@`%` TO `dev02`@`%` ? ? ? ? ? ? ? ? ?|
+----------------------------------------------------------------------+
3 rows in set (0.00 sec)
接下來從 dev_write 角色中撤消掉修改權限。
mysql> REVOKE INSERT, UPDATE, DELETE ON wordpress.* FROM 'dev_write';
Query OK, 0 rows affected (0.03 sec)
最后我們在來看看 dev02 用戶帳戶當前權限。
mysql> SHOW GRANTS FOR 'dev02'@'%' USING 'dev_read', 'dev_write';
+-----------------------------------------------------+
| Grants for dev02@% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
+-----------------------------------------------------+
| GRANT USAGE ON *.* TO `dev02`@`%` ? ? ? ? ? ? ? ? ? |
| GRANT SELECT ON `wordpress`.* TO `dev02`@`%` ? ? ? ?|
| GRANT `dev_read`@`%`,`dev_write`@`%` TO `dev02`@`%` |
+-----------------------------------------------------+
3 rows in set (0.00 sec)
從上面的結果可以看出,角色中撤銷權限會影響到該角色中任何用戶的權限。因此 dev02 現在已經沒有表修改權限(INSERT,UPDATE,和 DELETE 權限已經去掉)。如果要恢復角色的修改權限,只需重新授予它們即可。
# 授予 dev_write 角色修改權限。
mysql> GRANT INSERT, UPDATE, DELETE ON wordpress.* TO 'dev_write';
# 再次查看 dev02 用戶權限,修改權限已經恢復。
mysql> SHOW GRANTS FOR 'dev02'@'%' USING 'dev_read', 'dev_write';
+----------------------------------------------------------------------+
| Grants for dev02@% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `dev02`@`%` ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
| GRANT SELECT, INSERT, UPDATE, DELETE ON `wordpress`.* TO `dev02`@`%` |
| GRANT `dev_read`@`%`,`dev_write`@`%` TO `dev02`@`%` ? ? ? ? ? ? ? ? ?|
+----------------------------------------------------------------------+
3 rows in set (0.00 sec)
刪除角色
要刪除一個或多個角色,可以使用?DROP ROLE?語句。
mysql> DROP ROLE 'role_name', 'role_name', ...;
如同?REVOKE?語句一樣,刪除角色會從授權它的每個帳戶中撤消該角色。例如,要刪除 dev_read,dev_write角色,可使用以下語句。
mysql> DROP ROLE 'dev_read', 'dev_write';
復制用戶帳戶權限到另一個用戶
MySQL 8.0 將每一個用戶帳戶視為角色,因此可以將用戶帳戶授予另一個用戶帳戶。例如:將一開發人員帳號權限復制到另一開發人員帳號。
創建一個新的開發用戶帳戶
mysql> CREATE USER 'dev04'@'%' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.04 sec)
將 dev02 用戶帳戶的權限復制到 dev04 用戶帳戶
mysql> GRANT 'dev02'@'%' TO 'dev04'@'%';
Query OK, 0 rows affected (0.09 sec)
查看 dev04 用戶帳戶的權限
mysql> SHOW GRANTS FOR 'dev04'@'%' USING 'dev02';
+----------------------------------------------------------------------+
| Grants for dev04@% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `dev04`@`%` ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
| GRANT SELECT, INSERT, UPDATE, DELETE ON `wordpress`.* TO `dev04`@`%` |
| GRANT `dev02`@`%` TO `dev04`@`%` ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+----------------------------------------------------------------------+
3 rows in set (0.00 sec)
參考文檔
http://www.google.com
http://t.cn/RuTna0t
http://t.cn/RuTnEPH
http://t.cn/RuTnFGz
http://t.cn/RuTnFGz
你的時間有限,所以不要為別人而活。不要被教條所限,不要活在別人的觀念里。不要讓別人的意見左右自己內心的聲音。最重要的是,勇敢的去追隨自己的心靈和直覺,只有自己的心靈和直覺才知道你自己的真實想法,其他一切都是次要。
——史蒂夫·喬布斯
總結
以上是生活随笔為你收集整理的mysql 角色管理_MySQL 8 用户和角色管理入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZooKeeper的安装与部署
- 下一篇: .npy文件_python——文件读写