前言:MySQL創(chuàng)建用戶的方法分成三種:INSERT USER表的方法、CREATE USER的方法、GRANT的方法。
一、賬號(hào)名稱的構(gòu)成方式
賬號(hào)的組成方式:用戶名+主機(jī)(所以可以出現(xiàn)重復(fù)的用戶名,跟其他的數(shù)據(jù)庫不一樣)
用戶名:16字符以內(nèi).
主機(jī)名:可以用主機(jī)名和IP地址,也可以用通配符
通配符說明:172.18.10.%(IP地址為172.18.10段的所有IP地址都可以訪問)
二、通過CREATE USER命令進(jìn)行創(chuàng)建用戶
腳本:CREATE USER 'username@host' [IDENTIFIED BY 'PASSWORD'] 其中密碼是可選項(xiàng);
例子:CREATE USER 'john@192.168.189.71' IDENTIFIED BY "123";
CREATE USER 'john@192.168.189.%' IDENTIFIED BY "123";
CREATE USER 'john@' ;
說明:該方法創(chuàng)建出來的用戶只有連接數(shù)據(jù)庫的權(quán)限,需要后續(xù)繼續(xù)授權(quán);
注意:用戶與@后主機(jī)地址是一體的,用一個(gè)分號(hào)連接,否則會(huì)報(bào)錯(cuò),ERROR 1396 (HY000): Operation CREATE USER failed for 'remote'@'%'
三、通過GRANT命令創(chuàng)建用戶
當(dāng)數(shù)據(jù)庫存在用戶的時(shí)候GRANT會(huì)對(duì)用戶進(jìn)行授權(quán),但當(dāng)數(shù)據(jù)庫不存在該用戶的時(shí)候,就會(huì)創(chuàng)建相應(yīng)的用戶并進(jìn)行授權(quán)。(說明上面那步是多余的)
腳本:
GRANT <ALL|priv1,priv2,.....privn> ON
[object] [IDENTIFIED BY 'password']
[WITH GRANT OPTION];
MAX_QUERIES_PER_HOUR count
MAX_UPDATES_PER_HOUR count
MAX_CONNECTIONS_PER_HOUR count
MAX_USER_CONNECTIONS count
說明:priv代表權(quán)限select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個(gè)權(quán)限
例子:mysql>grant select,insert,update,delete,create,drop on test.hr to john@192.168.10.1 identified by '123';
說明:給主機(jī)為192.168.10.1的用戶john分配可對(duì)數(shù)據(jù)庫test的hr表進(jìn)行select,insert,update,delete,create,drop等操作的權(quán)限,并設(shè)定口令為123。
mysql>grant all privileges on test.* to joe@192.168.10.1 identified by '123';
說明:給主機(jī)為192.168.10.1的用戶john分配可對(duì)數(shù)據(jù)庫test所有表進(jìn)行所有操作的權(quán)限,并設(shè)定口令為123。
mysql>grant all privileges on *.* to john@192.168.10.1 identified by '123';
說明:給主機(jī)為192.168.10.1的用戶john分配可對(duì)所有數(shù)據(jù)庫的所有表進(jìn)行所有操作的權(quán)限,并設(shè)定口令為123。
mysql>grant all privileges on *.* to john@localhost identified by '123';
說明:用戶john分配可對(duì)所有數(shù)據(jù)庫的所有表進(jìn)行所有操作的權(quán)限,并設(shè)定口令為123。
查看權(quán)限:
show grants?for你的用戶;
show grants?forroot@'localhost';
show grants?for?webgametest@10.3.18.158;
show?createdatabase?dbname;? 這個(gè)可以看到創(chuàng)建數(shù)據(jù)庫時(shí)用到的一些參數(shù)。
showcreatetabletickets;??? 可以看到創(chuàng)建表時(shí)用到的一些參數(shù)
撤銷權(quán)限:
revoke all on *.* fromdba@localhost;
四、直接向mysql.user表插入記錄(該方法個(gè)人很少用)
因?yàn)閿?shù)據(jù)庫的用戶信息都是保存在mysql.user這張表的,所以直接對(duì)該表進(jìn)行插入語句,即可完成用戶的創(chuàng)建;
mysql> insert into user (host,user,password) values ('%','john',password('123'));
五、完成用戶的創(chuàng)建后,請(qǐng)記得刷新系統(tǒng)權(quán)限表;
mysql>flush privileges;
總結(jié):雖然創(chuàng)建用戶的方法有三種,個(gè)人還是傾向于第二種方法,一步到位,簡(jiǎn)單明了;
其他的兩種方法只是有助于理解數(shù)據(jù)庫的原理而已。
?轉(zhuǎn)自:http://blog.csdn.net/huaishu/article/details/50540814