1. 程式人生 > 遊戲資訊 >戰爭雷霆64式輕型坦克開發始末(上)

戰爭雷霆64式輕型坦克開發始末(上)

總結自:MySQL Crash Course(MySQL必知必會)https://e.jd.com/30154378.html?ebook=1

MySQL-使用者管理

mysql> use mysql;
mysql> select user from user;
mysql> select user from user;
+------------------+
| user             |
+------------------+
| mysql.infoschema |
| mysql.session    |
| mysql.sys        |
| root             |
+------------------+
4 rows in set (0.00 sec)

mysql 資料庫有一個 user 表,包含所有使用者賬號。user 表有一個 user 列,用來儲存使用者登陸名。

@

目錄

1. 建立使用者賬號

使用 CREATE USER (USER) IDENTIFIED BY (PASSWORD) 語句:

mysql> create user ben identified by 'mysql';
mysql> select user from user;
+------------------+
| user             |
+------------------+
| ben              |
| mysql.infoschema |
| mysql.session    |
| mysql.sys        |
| root             |
+------------------+
5 rows in set (0.00 sec)

GRANT 和 INSERT 也能建立使用者,但是不建議直接對使用者表進行插入操作。

重新命名使用者賬號,使用 RENAME USER (USER) TO (NEW)語句:

mysql> rename user ben to pineapple;
Query OK, 0 rows affected (0.11 sec)

mysql> select user from user;
+------------------+
| user             |
+------------------+
| pineapple        |
| mysql.infoschema |
| mysql.session    |
| mysql.sys        |
| root             |
+------------------+
5 rows in set (0.00 sec)

2. 刪除使用者賬號

刪除使用者賬號使用DROP USER (USER) 語句:

mysql> drop user pineapple;
Query OK, 0 rows affected (0.08 sec)

mysql> select user from user;
+------------------+
| user             |
+------------------+
| mysql.infoschema |
| mysql.session    |
| mysql.sys        |
| root             |
+------------------+
4 rows in set (0.00 sec)

注意:mysql5之後的版本使用 DROP USER 可以同時刪除賬號與賬號許可權

3. 設定訪問許可權

新建立的使用者沒有任何許可權,能登入資料庫,但看不到任何資料,執行不了任何操作

mysql> create user pineapple identified by 'mysql';
Query OK, 0 rows affected (0.13 sec)

mysql> show grants for pineapple;
+---------------------------------------+
| Grants for pineapple@%                |
+---------------------------------------+
| GRANT USAGE ON *.* TO `pineapple`@`%` |
+---------------------------------------+
1 row in set (0.00 sec)

結果顯示 pineapple 使用者有一個許可權:USAGE ON \*.*,表示沒有許可權。

為了設定許可權,可以使用 GRANT 語句,它要求至少有以下資訊

  • 要授予的許可權
  • 被授予訪問許可權的資料庫和表
  • 使用者名稱

舉個例子:

mysql> create database demo;
Query OK, 1 row affected (0.15 sec)

mysql> grant select on demo.* to pineapple;
Query OK, 0 rows affected (0.12 sec)

mysql> show grants for pineapple;
+---------------------------------------------+
| Grants for pineapple@%                      |
+---------------------------------------------+
| GRANT USAGE ON *.* TO `pineapple`@`%`       |
| GRANT SELECT ON `demo`.* TO `pineapple`@`%` |
+---------------------------------------------+
2 rows in set (0.00 sec)

此 GRANT 表示:允許使用者 pineapple 在資料庫demo下的所有表使用select查詢語句,也就是隻有訪問許可權。

GRANT 的反操作為 REVOKE,用來撤銷使用者的特定許可權。

mysql> revoke select on demo.* from pineapple;
Query OK, 0 rows affected (0.10 sec)

mysql> show grants for pineapple;
+---------------------------------------+
| Grants for pineapple@%                |
+---------------------------------------+
| GRANT USAGE ON *.* TO `pineapple`@`%` |
+---------------------------------------+
1 row in set (0.00 sec)

注意:

GRANT TO

REVOKE FROM

GRANT 和 REVOKE 可以在幾個層次上控制訪問許可權

  • 整個伺服器,使用 GRANT ALL 和 REVOKE ALL
  • 整個資料庫,使用 ON database.*
  • 特定的表,使用 On database.table
  • 特定的列
  • 特定的儲存過程

4. 更改使用者口令

為了更改使用者口令,可以使用 SET PASSWORD FOR USER = PASSWORD('PASSWORD')

set password for pineapple = Password('Password$123');

注意:

新密碼必須傳到 Password() 函式進行加密

MySQL8版本使用 `ALTER USER 'USER'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'PASSWORD':

alter user 'pineapple'@'%' identified with MYSQL_NATIVE_PASSWORD BY 'Password$123';

總結自:MySQL Crash Course(MySQL必知必會)https://e.jd.com/30154378.html?ebook=1