十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)MySQL用戶名root密碼遺忘怎么辦,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

目前創(chuàng)新互聯(lián)建站已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、濂溪網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
講到用戶了,就先說(shuō)說(shuō)mysql的用戶權(quán)限吧.5.7開(kāi)始,有了很多改變:
1.用戶長(zhǎng)度變了.5.7.8以后的用戶長(zhǎng)度為32個(gè)字符,5.7.8以前的用戶長(zhǎng)度為16個(gè)字符,5.6我記得好像是8? 忘了.咳咳
2. mysql_native_password插件默認(rèn)啟用,且password以后將慢慢移除.在mysql.user里面password字段已經(jīng)木有了,轉(zhuǎn)而通過(guò)plugin字段的加密算法將密碼加密后的字符存儲(chǔ)在authentication_string字段;
3.5.7.4以后用戶的密碼可以設(shè)置有效期,在有效期到了之后,會(huì)要求重新設(shè)置密碼;
4.5.7.6開(kāi)始,create和alter user可以鎖定用戶,鎖定后,用戶將不能訪問(wèn)mysql.如:ALTER USER 'jeffrey'@'localhost' ACCOUNT LOCK;
5.5.7.5開(kāi)始,mysql提供了ssl和RSA通信證書, auto_generate_certs和sha256_password_auto_generate_rsa_keys參數(shù)控制,但必須在啟動(dòng)之前設(shè)置;
6.5.7的初始化與之前的比也有了變化.刪除匿名用戶,初始化的時(shí)候只保留了root@'localhost'和mysql.sys@'localhost'兩個(gè)用戶.且也沒(méi)有了test這個(gè)庫(kù);
7.5.7.8開(kāi)始增加了一個(gè)super_read_only的參數(shù), 目的是除了root用戶的supper用戶都設(shè)為只讀;
8.以前grant可以將沒(méi)有的用戶直接新增創(chuàng)建并賦權(quán),在5.7默認(rèn)模式(sql_mode)下,是不能通過(guò)grant來(lái)新增新用戶,必須先create user之后在grant權(quán)限;
參考官方手冊(cè):http://dev.mysql.com/doc/refman/5.7/en/security.html
普通用戶修改,就不細(xì)說(shuō)了,登陸擁有super用戶的直接如下語(yǔ)句修改:
alter user user_name@'host' identified by 'password';
主要說(shuō)下root密碼的修復(fù),2種方法:
1.常規(guī)方法:
在啟動(dòng)的時(shí)候在my.cnf加上skip-grant-tables參數(shù),或者啟動(dòng)選項(xiàng)--skip-grant-tables,然后進(jìn)入mysql修改mysql密碼,在重啟mysql服務(wù)即可;網(wǎng)上這種帖子很多,不細(xì)說(shuō);
2.黑科技(不停機(jī)修改):
這種方法不推薦,但絕對(duì)好用,是跟某位大牛那學(xué)來(lái)的.
mysql到目前5.7的mysql.user表都是myisam引擎(據(jù)說(shuō)8.0以后就是innodb了).提到myisam引擎,大家都知道m(xù)yisam的表的數(shù)據(jù)都是放在.MYD里面的.所以,黑科技來(lái)啦;
1.進(jìn)入data/mysql目錄,復(fù)制user表的3個(gè)文件到另外的庫(kù),cp -a user* ../databasename1/
2.需要有操作databasename1庫(kù)中表權(quán)限的用戶,連上databasename1庫(kù),直接更改root用戶密碼為空:update user set entication_string='' where user='root'; 最后檢查一下select user,host,entication_string from databasename1 where user='root';
3.在將databasename1目錄的user的3個(gè)文件覆蓋原mysql庫(kù)下面的文件. cp -a data/databasename1/user* data/mysql/
4.這個(gè)時(shí)候還不能直接登錄,因?yàn)樾薷挠脩裘艽a后,需要flush privileges講新密碼刷進(jìn)內(nèi)存.我們已經(jīng)沒(méi)有super用戶來(lái)flush了,而且也不能停機(jī),這可怎么辦??? 大招來(lái)了,kill -HUP pid,在操作系統(tǒng)執(zhí)行該命令,注意pid是mysql的pid不是ppid,別把父進(jìn)程給掛起了.具體HUP的功能,百度吧.不細(xì)說(shuō).
到這就大功告成了,這個(gè)時(shí)候就可以用root以無(wú)密碼狀態(tài)登陸,在進(jìn)去修改root的密碼.ok.收工!
這個(gè)方法的知識(shí)點(diǎn):首先myisam是的數(shù)據(jù)是存儲(chǔ)在文件里面的,而且是可以通過(guò)復(fù)制直接將表結(jié)構(gòu),數(shù)據(jù),索引都copy利用,所以這也是一個(gè)安全隱患點(diǎn),mysql目錄的權(quán)限一定得控制好啊.其次就是kill -HUP pid 發(fā)起一個(gè)掛起信號(hào),然后mysqld_safe會(huì)監(jiān)控到掛起,就重新加載配置文件,對(duì)線上業(yè)務(wù)是沒(méi)有任務(wù)影響的,不會(huì)出現(xiàn)閃斷之類的情況出現(xiàn).
關(guān)于“mysql用戶名root密碼遺忘怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。