mysql中新增使用者名稱和密碼的語句:1、CREATE USER語句,可以建立普通用戶,並設定對應的密碼;2、INSERT語句,可以新建普通用戶,並設定對應的密碼;3、 GRANT語句,新建用戶,並設定對應的密碼和用戶權限。
(推薦教學: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 ] 'password' ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] 'password' ]]
參數說明如下:
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 'test1'@'localhost' IDENTIFIED BY 'test1'; Query OK, 1 rows affected (0.06 sec)
結果顯示,建立 test1 使用者成功。
在實際應用程式中,我們應避免明文指定密碼,可以透過 PASSWORD 關鍵字使用密碼的雜湊值設定密碼。
範例2
在MySQL 中,可以使用password() 函數來取得密碼的雜湊值,查看test1 雜湊值的SQL 語句和執行程序如下:
mysql> SELECT password('test1'); +-------------------------------------------+ | password('test1') | +-------------------------------------------+ | *06C0BF5B64ECE2F648B5F048A71903906BA08E5C | +-------------------------------------------+ 1 row in set, 1 warning (0.00 sec) “*06C0BF5B64ECE2F648B5F048A71903906BA08E5C”就是 test1 的哈希值。下面创建用户 test1,SQL 语句和执行过程如下: mysql> CREATE USER 'test1'@'localhost'IDENTIFIED BY PASSWORD '*06C0BF5B64ECE2F648B5F048A71903906BA08E5C'; 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 ('hostname', 'username', PASSWORD('password'), '', '', '');
由於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 ('localhost', 'test2', PASSWORD('test2'), '', '', ''); 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] 'password']
其中:
priv_type 参数表示新用户的权限;
database.table 参数表示新用户的权限范围,即只能在指定的数据库和表上使用自己的权限;
user 参数指定新用户的账号,由用户名和主机名构成;
IDENTIFIED BY 关键字用来设置密码;
password 参数表示新用户的密码。
例 4
下面使用 GRANT 语句创建名为 test3 的用户,主机名为 localhost,密码为 test3。该用户对所有数据库的所有表都有 SELECT 权限。SQL 语句和执行过程如下:
mysql> GRANT SELECT ON*.* TO 'test3'@localhost IDENTIFIED BY 'test3'; Query OK, 0 rows affected, 1 warning (0.01 sec)
其中,“*.*” 表示所有数据库下的所有表。结果显示创建用户成功,且 test3 用户对所有表都有查询(SELECT)权限。
技巧:GRANT 语句是 MySQL 中一个非常重要的语句,它可以用来创建用户、修改用户密码和设置用户权限。教程后面会详细介绍如何使用 GRANT 语句修改密码、更改权限。
以上是新增mysql的使用者名稱和密碼是什麼語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!