MySQL有時(shí)候忘記了root密碼是一件傷感的事。這里提供Windows 和 Linux 下的密碼重置方法。
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到洛扎網(wǎng)站設(shè)計(jì)與洛扎網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋洛扎地區(qū)。
Windows:
1.以系統(tǒng)管理員身份登陸系統(tǒng)。
2.打開cmd-----net start 查看mysql是否啟動(dòng)。啟動(dòng)的話就停止net stop mysql.
3.我的mysql安裝在d:\usr\local\mysql4\bin下。
4.跳過(guò)權(quán)限檢查啟動(dòng)mysql.
d:\usr\local\mysql\bin\mysqld-nt --skip-grant-tables
5.重新打開cmd。進(jìn)到d:\usr\local\mysql4\bin下:
d:\usr\local\mysql\bin\mysqladmin -u root flush-privileges password "newpassword"
d:\usr\local\mysql\bin\mysqladmin -u root -p shutdown 這句提示你重新輸密碼。
6.在cmd里net start mysql
7.搞定了。
Linux:
MySQL root密碼的恢復(fù)方法之一
如果忘記了MySQL root密碼,可以用以下方法重新設(shè)置:
1.KILL掉系統(tǒng)里的MySQL進(jìn)程;
killall -TERM MySQLd
2.用以下命令啟動(dòng)MySQL,以不檢查權(quán)限的方式啟動(dòng);
safe_MySQLd --skip-grant-tables
3.然后用空密碼方式使用root用戶登錄 MySQL;
MySQL -u root
4.修改root用戶的密碼;
MySQL update MySQL.user set password=PASSWORD('新密碼') where User='root';
MySQL flush privileges;
MySQL quit
重新啟動(dòng)MySQL,就可以使用新密碼登錄了。
MySQL root密碼正確,卻怎么也無(wú)法從本地登錄MySQL,提示
1 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
這里后來(lái)經(jīng)高人指點(diǎn)才發(fā)現(xiàn)mysql庫(kù)中的user表缺少一個(gè)root指向host:localhost的數(shù)據(jù)項(xiàng),只有一個(gè)root指向host:主機(jī)名的數(shù)據(jù)項(xiàng),故怎么也無(wú)法利用root賬戶登錄MySQL。
總結(jié)一點(diǎn)就是root賬戶缺失了訪問(wèn)localhost主機(jī)的賬戶信息,導(dǎo)致無(wú)法本地登錄。
那有什么辦法恢復(fù)root登錄呢?
這里記錄一下今天遇到的糾結(jié)事情:
首先kill掉MySQL進(jìn)程然后在啟動(dòng)mysql的參數(shù)中加入
--skip-grant-tables
會(huì)發(fā)現(xiàn)這時(shí)無(wú)密碼就可以登錄mysql了。
當(dāng)然我們還必須修復(fù)root賬戶丟失的數(shù)據(jù)項(xiàng)。
這里有兩種解決方案:
第一種是因?yàn)閞oot賬戶初始的時(shí)候有3條記錄,包含root對(duì)應(yīng)localhost,hostname,127.0.0.1三條賬戶數(shù)據(jù),我們可以u(píng)pdate host為其他兩項(xiàng)中一項(xiàng)為localhost即可。
第二種是直接insert一條記錄,host為localhost即可
總結(jié)一下:即使root的host包含了主機(jī)名,127.0.0.1那么依然是無(wú)法正常登錄的,這里必須要有l(wèi)ocalhost的host才行。
如果上面辦法還是無(wú)法正常登錄我們可嘗試另一種辦法
在本地用mysql命令直接回車可以進(jìn)入mysql,但是里面只有test和information_schema數(shù)據(jù)庫(kù),沒有mysql等數(shù)據(jù)庫(kù),使用use mysql報(bào)如下錯(cuò):
mysql use mysql
ERROR 1044 (42000): Access denied for user "@'localhost' to database 'mysql'
意思是說(shuō)沒有指定user,沒有權(quán)限訪問(wèn)數(shù)據(jù)庫(kù)mysql。
那么用root登錄呢,輸入正確的密碼報(bào)如下錯(cuò):
[root@228827 ~]# mysql -uroot -p123456
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
密碼正確的情況下,mysql數(shù)據(jù)庫(kù)已經(jīng)禁止了root用戶在本地的登錄權(quán)限了
MySQL提供跳過(guò)訪問(wèn)控制的命令行參數(shù),通過(guò)在命令行以此命令啟動(dòng)MySQL服務(wù)器:\x0d\x0asafe_mysqld --skip-grant-tables\x0d\x0a即可跳過(guò)MySQL的訪問(wèn)控制,任何人都可以在控制臺(tái)以管理員的身份進(jìn)入MySQL數(shù)據(jù)庫(kù)。\x0d\x0a需要注意的是在修改完密碼以后要把MySQL服務(wù)器停掉重新啟動(dòng)才會(huì)生效\x0d\x0a先找到mysql.server 然后停止mysql服務(wù)\x0d\x0a# mysqld_safe --skip-grant-tables --skip-networking \x0d\x0a# mysql\x0d\x0ause mysql;\x0d\x0aupdate user set password=PASSWORD("new-password") where user="root";\x0d\x0aflush privileges;
phpmyadmin登陸出現(xiàn)無(wú)法登錄MySQL是設(shè)置錯(cuò)誤造成的,解決方法為:
1、首先打開運(yùn)行命令窗口,可以通過(guò)按住windows鍵+R的組合鍵來(lái)實(shí)現(xiàn),輸入cmd,然后按下回車鍵。
2、這樣就進(jìn)入了doc的命令窗口。
3、切換到我們安裝mysql的盤符。
4、然后再切換到mysql的bin目錄。
5、輸入mysql -uroot -p。
6、提示輸入密碼。
7、輸入mysql密碼之后,然后按下回車鍵,出現(xiàn)welcome的字樣表示登陸成功。
1 進(jìn)入cmd,停止mysql服務(wù):Net stop mysql
若是停不掉:Ctrl+Alt+Del打開任務(wù)管理器,在詳細(xì)信息里結(jié)束mysql.exe任務(wù)。
若服務(wù)名無(wú)效:來(lái)到MySQL的安裝路徑下bin,在命令行中輸入mysqld --install;成功:出現(xiàn)Service successfully install代表你已經(jīng)安裝成功;
2 進(jìn)入bin目錄
mysqld -nt --skip-grant-tables
重新打開一個(gè)管理員命令提示符輸入mysql進(jìn)入重新改密碼就OK了。
再次mysql -u root -p進(jìn)入操作
mysqlupdate mysql.user set anthentication_string=password(‘你的密碼’) where user=‘root’;
mysqlflush privileges;//刷新MySQL的系統(tǒng)權(quán)限
mysqlquit;
再次mysql -u root -p進(jìn)入就可以操作了。
免安裝版的mysql可能會(huì)出現(xiàn)首次登錄不進(jìn)去的情況,解決辦法是:
1、在my.ini文件中mysqld下面加上skip-grant-tables,如圖:
2、重啟mysql;net restart mysql;
3、輸入mysql,出現(xiàn)welcome to mysql字樣,表示進(jìn)入成功,然后show databases;然后use mysql;
4、修改root用戶的密碼;
update mysql.user setpassword=password('新密碼') where user='root' ;
如果是5.7版本以上的則用下面的命令修改密碼:
update mysql.user set authentication_string=password('新密碼') where user='root' ;
5、flush privileges;
6、去掉my.ini中加入的skip-grant-tables,重啟mysql,然后就可以采用新密碼進(jìn)入mysql了。
記住,修改完密碼后必須刪掉skip-grant-tables,否則mysql還是可以不通過(guò)密碼進(jìn)入;
7、重啟mysql后再進(jìn)入mysql可能會(huì)提示:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement?before executing this statement ;
此時(shí)需要輸入命令:set password=password('123456');//此處密碼必須跟上面設(shè)置的密碼一樣;