. 創建用戶賬戶可以用三種方式創建
MySQL賬戶:
1 使用GRANT語句
2 直接操作MySQL授權表
3 使用CREATE USER語句
最好的方法是使用GRANT語句,因為這樣更精確,錯誤少。
創建賬戶的其它方法是使用MySQL賬戶管理功能的第三方程序。phpMyAdmin即是一個程序。
下面的示例說明如何使用MySQL客戶端程序來設置新用戶。為了更改,你必須以MySQL root用戶連接MySQL服務器,并且root賬戶必須有mysql數據庫的INSERT權限和RELOAD管理權限。
首先,使用MySQL程序以MySQL root用戶來連接服務器:
shell> MySQL --user=root MySQL
如果你為root賬戶指定了密碼,還需要為該MySQL命令和本節中的其它命令提供--password或-p選項。
以root連接到服務器上后,可以添加新賬戶。下面的語句使用GRANT來設置四個新賬戶:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';
除了GRANT,你可以直接用INSERT語句創建相同的賬戶,然后使用FLUSH PRIVILEGES告訴服務器重載授權表:
shell> mysql --user=root mysql
mysql> INSERT INTO user
-> VALUES('localhost','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
-> Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;
當你用INSERT創建賬戶時使用FLUSH PRIVILEGES的原因是告訴服務器重讀授權表。否則,只有重啟服務器后更改方會被注意到。使用 GRANT,則不需要使用FLUSH PRIVILEGES。
用INSERT使用PASSWORD()函數是為了加密密碼。GRANT語句為你加密密碼,因此不需要PASSWORD()。
'Y'值啟用賬戶權限。對于admin賬戶,還可以使用更加可讀的INSERT擴充的語法(使用SET)。
在為dummy賬戶的INSERT語句中,只有user表中的Host、User和Password列記錄為指定的值。沒有一個權限列為顯式設置,因此MySQL將它們均指定為 默認值'N'。這樣等同于GRANT USAGE的操作。
請注意要設置超級用戶賬戶,只需要創建一個權限列設置為'Y'的user表條目。user表權限為全局權限,因此其它 授權表不再需要條目。
第三種方法,CREATE USER語句。
shell> mysql --user=root
mysql> create user 'jian'@'localhost' identified by 'my123';#賬戶密碼設置和grant語句類似
2.刪除用戶賬戶
要想移除賬戶,應使用DROP USER語句.
3.更改賬戶口令
設置MySQL用戶帳號密碼的方法有三種:
-
使用mysqladmin程序:
% mysqladmin -h localhost -u root password "password" #設置在本地以root身分登錄的密碼
% mysqladmin -h remote -u root password "password" #設置遠程主機以root身分登錄的密碼
在初始設置時,這兩條語句都要運行,以確保數據庫本地訪問和網絡訪問的安全。
-
通過set password這條SQL語句設置:
mysql> set password for 'root'@'localhost' = password('password');
mysql> set password for 'root'@'remote' = password('password');
-
直接修改user權限表:
mysql> use mysql;
mysql> update user set password=password('password') where user='root';
mysql> flush privileges; #重載權限表,使修改馬上生效