您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關添加mysql用戶名和密碼的sql語句怎么寫,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
mysql中添加用戶名和密碼的語句:1、CREATE USER語句,可以創建普通用戶,并設置相應的密碼;2、INSERT語句,可以新建普通用戶,并設置相應的密碼;3、GRANT語句,新建用戶,并設置相應的密碼和用戶權限。
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用戶名和密碼的sql語句怎么寫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。