MySQL 在安裝時(shí),會(huì)默認(rèn)創(chuàng)建一個(gè)名為 root 的用戶,該用戶擁有超級(jí)權(quán)限,可以控制整個(gè) MySQL 服務(wù)器。
在對(duì) MySQL 的日常管理和操作中,為了避免有人惡意使用 root 用戶控制數(shù)據(jù)庫,我們通常創(chuàng)建一些具有適當(dāng)權(quán)限的用戶,盡可能地不用或少用 root 用戶登錄系統(tǒng),以此來確保數(shù)據(jù)的安全訪問。
MySQL 提供了以下 3 種方法創(chuàng)建用戶。
使用 CREATE USER 語句創(chuàng)建用戶 在 mysql.user 表中添加用戶 使用 GRANT 語句創(chuàng)建用戶 下面根據(jù)實(shí)例詳細(xì)講解這 3 種方法。
1. 使用CREATE USER語句創(chuàng)建用戶
可以使用 CREATE USER 語句來創(chuàng)建 MySQL 用戶,并設(shè)置相應(yīng)的密碼。其基本語法格式如下:
CREATE USER <用戶> [ IDENTIFIED BY [ PASSWORD ] 'password' ] [ ,用戶 [ IDENTIFIED BY [ PASSWORD ] 'password' ]] 參數(shù)說明如下:
1) 用戶
指定創(chuàng)建用戶賬號(hào),格式為 user_name'@'host_name。這里的user_name是用戶名,host_name為主機(jī)名,即用戶連接 MySQL 時(shí)所用主機(jī)的名字。如果在創(chuàng)建的過程中,只給出了用戶名,而沒指定主機(jī)名,那么主機(jī)名默認(rèn)為“%”,表示一組主機(jī),即對(duì)所有主機(jī)開放權(quán)限。
CREATE USER 語句可以不指定初始密碼。但是從安全的角度來說,不推薦這種做法。 使用 CREATE USER 語句必須擁有 mysql 數(shù)據(jù)庫的 INSERT 權(quán)限或全局 CREATE USER 權(quán)限。 使用 CREATE USER 語句創(chuàng)建一個(gè)用戶后,MySQL 會(huì)在 mysql 數(shù)據(jù)庫的 user 表中添加一條新記錄。 CREATE USER 語句可以同時(shí)創(chuàng)建多個(gè)用戶,多個(gè)用戶用逗號(hào)隔開。 新創(chuàng)建的用戶擁有的權(quán)限很少,它們只能執(zhí)行不需要權(quán)限的操作。如登錄 MySQL、使用 SHOW 語句查詢所有存儲(chǔ)引擎和字符集的列表等。如果兩個(gè)用戶的用戶名相同,但主機(jī)名不同,MySQL 會(huì)將它們視為兩個(gè)用戶,并允許為這兩個(gè)用戶分配不同的權(quán)限集合。
例 1
使用 CREATE USER 創(chuàng)建一個(gè)用戶,用戶名是 test1,密碼是 test1,主機(jī)名是 localhost。SQL 語句和執(zhí)行過程如下。
mysql> CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1'; Query OK, 1 rows affected (0.06 sec) 結(jié)果顯示,創(chuàng)建 test1 用戶成功。