MySQL建立使用者(CREATE USER)

2020-07-16 10:04:45
在對 MySQL 的日常管理和實際操作中,為了避免使用者惡意冒名使用 root 賬號控制資料庫,通常需要建立一系列具備適當許可權的賬號,應該盡可能地不用或少用 root 賬號登入系統,以此來確保資料的安全存取。

建立使用者

可以使用 CREATE USER 語句來建立一個或多個 MySQL 賬戶,並設定相應的口令。

語法格式:

CREATE USER <使用者名稱> [ IDENTIFIED ] BY [ PASSWORD ] <口令>

語法說明如下:

1) <使用者名稱>

指定建立使用者賬號,格式為 'user_name'@'host_name'。這裡user_name是使用者名稱,host_name為主機名,即使用者連線 MySQL 時所在主機的名字。若在建立的過程中,只給出了賬戶的使用者名稱,而沒指定主機名,則主機名預設為“%”,表示一組主機。

2) PASSWORD

可選項,用於指定雜湊口令,即若使用明文設定口令,則需忽略PASSWORD關鍵字;若不想以明文設定口令,且知道 PASSWORD() 函數返回給密碼的雜湊值,則可以在口令設定語句中指定此雜湊值,但需要加上關鍵字PASSWORD

3) IDENTIFIED BY子句

用於指定使用者賬號對應的口令,若該使用者賬號無口令,則可省略此子句。

4) <口令>

指定使用者賬號的口令,在IDENTIFIED BY關鍵字或PASSWOED關鍵字之後。給定的口令值可以是只由字母和數位組成的明文,也可以是通過 PASSWORD() 函數得到的雜湊值。

使用 CREATE USER 語句應該注意以下幾點:
  • 如果使用 CREATE USER 語句時沒有為使用者指定口令,那麼 MySQL 允許該使用者可以不使用口令登入系統,然而從安全的角度而言,不推薦這種做法。
  • 使用 CREATE USER 語句必須擁有 MySQL 中 MySQL 資料庫的 INSERT 許可權或全域性 CREATE USER 許可權。
  • 使用 CREATE USER 語句建立一個使用者賬號後,會在系統自身的 MySQL 資料庫的 user 表中新增一條新記錄。若建立的賬戶已經存在,則語句執行時會出現錯誤。
  • 新建立的使用者擁有的許可權很少。他們可以登入 MySQL,只允許進行不需要許可權的操作,如使用 SHOW 語句查詢所有儲存引擎和字元集的列表等。

如果兩個使用者具有相同的使用者名稱和不同的主機名,MySQL 會將他們視為不同的使用者,並允許為這兩個使用者分配不同的許可權集合。

【範例 1】使用 CREATE USER 建立一個使用者,使用者名稱是 james,密碼是 tiger,主機是 localhost。輸入的 SQL 語句和執行過程如下所示。
mysql> CREATE USER 'james'@'localhost'
    -> IDENTIFIED BY 'tiger';
Query OK, 0 rows affected (0.12 sec)
在 Windows 命令列工具中,使用新建立的使用者 james 和密碼 tiger 登入資料庫伺服器,如下所示。
C:UsersUSER>mysql -h localhost -u james -p
Enter password: *****
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 5
Server version: 5.7.20-log MySQL Community Server (GPL)
Copyright (c) 2000, 2017, 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.