安裝好mysql數(shù)據(jù)庫后,第一次啟動mysqld服務(wù)的時候,會進(jìn)行初始化懦砂,初始化的結(jié)果就是會預(yù)先創(chuàng)建內(nèi)置的幾個數(shù)據(jù)庫,比如mysql和test等。
-
用命令查看一下數(shù)據(jù)庫
image.png其中孕惜,information_schema數(shù)據(jù)庫是mysql在運(yùn)行過程中在內(nèi)存中虛擬出來的表愧薛,存儲著mysql運(yùn)行過程中的一些數(shù)據(jù),在磁盤上并沒有文件存在衫画。
?在磁盤上毫炉,每個數(shù)據(jù)庫文件就像一個文件夾一樣(我們手動mkdir一個文件夾,在show databases也能看得到)的存在削罩。
-
在數(shù)據(jù)庫mysql中
image.png
其中的user數(shù)據(jù)表瞄勾,存放著mysql用戶的一些信息。
?? mysql的用戶都是以 “用戶名@主機(jī)(或域名)”來標(biāo)記的弥激,即該用戶在哪個或哪些主機(jī)上登錄('%'代表所有主機(jī)都可以)进陡,當(dāng)我們通過mysql -u 用戶名 -p -h 服務(wù)器地址,來登錄mysql服務(wù)器的時候微服,mysql會在user表中檢索是否有當(dāng)前用戶趾疚,以及是否允許該客戶機(jī)連接到服務(wù)器。即user表中的host字段是允許對應(yīng)用戶登錄的客戶端主機(jī)以蕴。用戶名@主機(jī)(或域名)才算是一個完整的用戶名標(biāo)識糙麦。
?? 注意其中的localhost和127.0.01,只有在服務(wù)器上登錄mysql客戶端時丛肮,mysql才會判斷客戶端主機(jī)來源是這兩個赡磅。而zhang是當(dāng)前機(jī)器的hostname。默認(rèn)情況下宝与,root用戶是不允許服務(wù)器以外的客戶端(注意:用ssh登錄到服務(wù)器焚廊,再在服務(wù)器上連接mysql服務(wù)器,算是在服務(wù)器本機(jī)登錄习劫,是允許root用戶連接的)登錄的咆瘟。其它客戶端連接時,默認(rèn)會被拒絕:
注:root@192.168.0.102是我后面添加的榜聂,添加以后就允許root用戶在該客戶機(jī)上登錄了搞疗。
所以如果想讓服務(wù)器本機(jī)以外的客戶端能夠登錄就要創(chuàng)建對應(yīng)的用戶,或者將對應(yīng)host字段改成相應(yīng)的客戶端主機(jī)(或者是'%'须肆,允許任何客戶端主機(jī))匿乃。
- 查看當(dāng)前登錄用戶:
假如我們創(chuàng)建了一個網(wǎng)段用戶,root@'192.168.0.%'豌汇,在同網(wǎng)段的某臺機(jī)器上登錄mysql服務(wù)器幢炸,
①、select user();:顯示結(jié)果為拒贱,root@192.168.0.102
②宛徊、select current_user; :顯示結(jié)果為佛嬉,root@192.168.0.%
-
創(chuàng)建用戶的方式:
方式一:
①、創(chuàng)建用戶:create user 用戶名@'允許的客戶端主機(jī)' identified by '密碼'闸天;(注:如果用戶名后面不跟@'主機(jī)'暖呕,表示@'%',即允許該用戶在任何客戶端主機(jī)登錄苞氮。另外在所有的語法里湾揽,不管是查詢還是創(chuàng)建,還是授權(quán)笼吟,只寫用戶名库物,就表示用戶名@'%',比如root@'192.168.0.192'和root@'%'不是同一個用戶)
image.png②贷帮、授權(quán):
1戚揭、查看授權(quán):
show grants for 用戶名@‘客戶機(jī)’;
注:“ GRANT USAGE ON . TO 'yu'@'%' IDENTIFIED BY PASSWORD '*F5CBECEFDCF62565C27D2EA7034168E634342EA3' ”
其中撵枢,USAGE表示具體權(quán)限(登錄數(shù)據(jù)庫的權(quán)限)民晒;*.*,第一個*表示所有數(shù)據(jù)庫锄禽,第二個*表示數(shù)據(jù)庫的所有表镀虐。
image.png
2、授權(quán):grant 具體權(quán)限 on 數(shù)據(jù)庫.數(shù)據(jù)表 to 用戶[@'客戶機(jī)']沟绪;
授權(quán)完成后要刷新內(nèi)存中的權(quán)限列表:flush privileges;才能即時生效。
方式二:
在授權(quán)的同時創(chuàng)建用戶空猜,如果授權(quán)的用戶不存在绽慈,可以在授權(quán)的同時創(chuàng)建:
grant 具體權(quán)限 on 數(shù)據(jù)庫.數(shù)據(jù)表 to 用戶[@'客戶機(jī)'] identified by '密碼';(注:ALL privileges表示所有具體權(quán)限)
記得要刷新權(quán)限列表:
flush privileges; 修改用戶密碼
①辈毯、set password for 用戶[@'客戶機(jī)'] = password('密碼')坝疼;
注:后面這個password是加密函數(shù)。
修改完密碼:flush privileges;
②谆沃、mysqladmin -u用戶名 -h客戶機(jī) -p password '新密碼'钝凶;
注:這是在linux命令行下執(zhí)行,后面的password同樣是加密函數(shù)唁影。
③耕陷、修改mysql的user表的password字段:
update user set password=password('新密碼') where user = 'user' and host = 'host';
修改完密碼:flush privileges;