首頁  >  文章  >  資料庫  >  新增mysql的使用者名稱和密碼是什麼語句?

新增mysql的使用者名稱和密碼是什麼語句?

青灯夜游
青灯夜游原創
2020-10-15 11:04:179254瀏覽

mysql中新增使用者名稱和密碼的語句:1、CREATE USER語句,可以建立普通用戶,並設定對應的密碼;2、INSERT語句,可以新建普通用戶,並設定對應的密碼;3、 GRANT語句,新建用戶,並設定對應的密碼和用戶權限。

新增mysql的使用者名稱和密碼是什麼語句?

(推薦教學:mysql影片教學

MySQL 安裝時,會預設建立一個名為root的用戶,該用戶擁有超級權限,可以控制整個MySQL 伺服器。

在對MySQL 的日常管理和操作中,為了避免有人惡意使用root 用戶控制資料庫,我們通常會創建一些具有適當權限的用戶,盡可能地不用或少用root 用戶登入系統,以此來確保資料的安全存取。

MySQL 提供了以下 3 種方法來建立用戶,新增使用者名稱和密碼。

  • 使用 CREATE USER 語句建立用戶,新增使用者名稱和密碼。

  • 在 mysql.user 表中新增用戶,新增用戶名和密碼。

  • 使用 GRANT 語句建立用戶,新增使用者名稱和密碼。

下面根據實例詳細講解這 3 種方法。

1. 使用CREATE USER語句建立使用者

#可以使用 CREATE USER 語句來建立 MySQL 用戶,並設定對應的密碼。其基本語法格式如下:

CREATE USER <用户> [ IDENTIFIED BY [ PASSWORD ] &#39;password&#39; ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] &#39;password&#39; ]]

參數說明如下:

1) 使用者

指定建立使用者帳號,格式為user_name'@'host_name 。這裡的user_name是使用者名,host_name為主機名,也就是使用者連線 MySQL 時所用主機的名字。如果在建立的過程中,只給了使用者名,而沒指定主機名,那麼主機名稱預設為“%”,表示一組主機,即對所有主機開放權限。

2) IDENTIFIED BY子句

用於指定使用者密碼。新使用者可以沒有初始密碼,若使用者不設密碼,可省略此子句。

3) PASSWORD 'password'

PASSWORD 表示使用雜湊值設定密碼,該參數可選。如果密碼是一個普通的字串,則不需要使用 PASSWORD 關鍵字。 'password' 表示使用者登入時所使用的密碼,需要用單引號括起來。

使用 CREATE USER 語句時應注意以下幾點:

  • #CREATE USER 語句可以不指定初始密碼。但是從安全的角度來說,不建議這種做法。

  • 使用 CREATE USER 語句必須擁有 mysql 資料庫的 INSERT 權限或全域 CREATE USER 權限。

  • 使用 CREATE USER 語句建立一個使用者後,MySQL 會在 mysql 資料庫的 user 表中新增一筆新記錄。

  • CREATE USER 語句可以同時建立多個用戶,多個使用者以逗號隔開。

新建立的使用者擁有的權限很少,它們只能執行不需要權限的操作。如登入 MySQL、使用 SHOW 語句查詢所有儲存引擎和字元集的清單等。如果兩個用戶的用戶名相同,但主機名稱不同,MySQL 會將它們視為兩個用戶,並允許為這兩個用戶分配不同的權限集合。

範例 1

使用 CREATE USER 建立一個用戶,用戶名是 test1,密碼是 test1,主機名稱是 localhost。 SQL 語句和執行程序如下。

mysql> CREATE USER &#39;test1&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;test1&#39;;
Query OK, 1 rows affected (0.06 sec)

結果顯示,建立 test1 使用者成功。

在實際應用程式中,我們應避免明文指定密碼,可以透過 PASSWORD 關鍵字使用密碼的雜湊值設定密碼。

範例2

在MySQL 中,可以使用password() 函數來取得密碼的雜湊值,查看test1 雜湊值的SQL 語句和執行程序如下:

mysql> SELECT password(&#39;test1&#39;);
+-------------------------------------------+
| password(&#39;test1&#39;)                         |
+-------------------------------------------+
| *06C0BF5B64ECE2F648B5F048A71903906BA08E5C |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)
“*06C0BF5B64ECE2F648B5F048A71903906BA08E5C”就是 test1 的哈希值。下面创建用户 test1,SQL 语句和执行过程如下:
mysql> CREATE USER &#39;test1&#39;@&#39;localhost&#39;IDENTIFIED BY PASSWORD &#39;*06C0BF5B64ECE2F648B5F048A71903906BA08E5C&#39;;
Query OK, 0 rows affected, 1 warning (0.00 sec)

執行成功後就可以使用密碼「test1」登入了。

2. 使用INSERT 語句新使用者

#可以使用INSERT 語句將使用者的資訊新增至mysql.user 表中,但必須擁有對mysql.user 表的INSERT 權限。通常 INSERT 語句只會加入 Host、User 和 authentication_string 這 3 個欄位的值。

MySQL 5.7 的 user 表中的密碼欄位從 Password 變成了 authentication_string,如果你使用的是 MySQL 5.7 之前的版本,將 authentication_string 欄位替換成 Password 即可。

使用INSERT 語句建立使用者的程式碼如下:

INSERT INTO mysql.user(Host, User,  authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (&#39;hostname&#39;, &#39;username&#39;, PASSWORD(&#39;password&#39;), &#39;&#39;, &#39;&#39;, &#39;&#39;);

由於mysql 資料庫的user 表中,ssl_cipher、x509_issuer 和x509_subject 這3 個欄位沒有預設值,所以向user 表插入新記錄時,請務必設定這3 個欄位的值,否則INSERT 語句將無法執行。

範例 3

下面使用 INSERT 語句建立名為 test2 的用戶,主機名稱是 localhost,密碼也是 test2。 SQL 語句與執行程式如下:

mysql> INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES (&#39;localhost&#39;, &#39;test2&#39;, PASSWORD(&#39;test2&#39;), &#39;&#39;, &#39;&#39;, &#39;&#39;);
Query OK, 1 row affected, 1 warning (0.02 sec)

结果显示,新建用户成功。但是这时如果通过该账户登录 MySQL 服务器,不会登录成功,因为 test2 用户还没有生效。

可以使用 FLUSH 命令让用户生效,命令如下:

FLUSH PRIVILEGES;

使用以上命令可以让 MySQL 刷新系统权限相关表。执行 FLUSH 命令需要 RELOAD 权限。

注意:user 表中的 User 和 Host 字段区分大小写,创建用户时要指定正确的用户名称或主机名。

3. 使用GRANT语句新建用户

虽然 CREATE USER 和 INSERT INTO 语句都可以创建普通用户,但是这两种方式不便授予用户权限。于是 MySQL 提供了 GRANT 语句。

使用 GRANT 语句创建用户的基本语法形式如下:

GRANT priv_type ON database.table TO user [IDENTIFIED BY [PASSWORD] &#39;password&#39;]

其中:

  • priv_type 参数表示新用户的权限;

  • database.table 参数表示新用户的权限范围,即只能在指定的数据库和表上使用自己的权限;

  • user 参数指定新用户的账号,由用户名和主机名构成;

  • IDENTIFIED BY 关键字用来设置密码;

  • password 参数表示新用户的密码。

例 4

下面使用 GRANT 语句创建名为 test3 的用户,主机名为 localhost,密码为 test3。该用户对所有数据库的所有表都有 SELECT 权限。SQL 语句和执行过程如下:

mysql> GRANT SELECT ON*.* TO &#39;test3&#39;@localhost IDENTIFIED BY &#39;test3&#39;;
Query OK, 0 rows affected, 1 warning (0.01 sec)

其中,“*.*” 表示所有数据库下的所有表。结果显示创建用户成功,且 test3 用户对所有表都有查询(SELECT)权限。

技巧:GRANT 语句是 MySQL 中一个非常重要的语句,它可以用来创建用户、修改用户密码和设置用户权限。教程后面会详细介绍如何使用 GRANT 语句修改密码、更改权限。

以上是新增mysql的使用者名稱和密碼是什麼語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn