linux下mysql密碼錯誤的解決方法:
前言
今天在服務器安裝mysql之后,登錄發(fā)現(xiàn)密碼錯誤,但是我沒有設置密碼呀,最后百度之后得知,mysql在5.7版本之后會自動創(chuàng)建一個初始密碼。
報錯如下:
[root@mytestlnx02?~]#?mysql?-u?root?-p Enter?password:? ERROR?1045?(28000):?Access?denied?for?user?'root'@'localhost'?(using?password:?YES)
修改密碼
1. 檢查mysql服務是否啟動,如果啟動,關閉mysql服務
//查看mysql服務狀態(tài) [root@mytestlnx02?~]#?ps?-ef?|?grep?-i?mysql root?????22972?????1??0?14:18?pts/0????00:00:00?/bin/sh?/usr/bin/mysqld_safe?--datadir=/var/lib/mysql?--socket=/var/lib/mysql/mysql.sock?--pid-file=/var/run/mysqld/mysqld.pid?--basedir=/usr?--user=mysql mysql????23166?22972??0?14:18?pts/0????00:00:00?/usr/sbin/mysqld?--basedir=/usr?--datadir=/var/lib/mysql?--plugin-dir=/usr/lib/mysql/plugin?--user=mysql?--log-error=/var/log/mysqld.log?--pid-file=/var/run/mysqld/mysqld.pid?--socket=/var/lib/mysql/mysql.sock root?????23237?21825??0?14:22?pts/0????00:00:00?grep?-i?mysql //關閉服務 [root@mytestlnx02?~]#?service?mysql?stop [root@mytestlnx02?~]#
2. 修改mysql的配置文件my.cnf
my.cnf配置文件的位置,一般在/etc/my.cnf,有些版本在/etc/mysql/my.cnf
在配置文件中,增加2行代碼
[mysqld] skip-grant-tables
作用是登錄mysql的時候跳過密碼驗證
然后啟動mysql服務,并進入mysql
[root@mytestlnx02?~]#?service?mysqld?start [root@mytestlnx02?~]# [root@mytestlnx02?~]#?mysql?-u?root? Type?'help;'?or?'h'?for?help.?Type?'c'?to?clear?the?current?input?statement. mysql>
3. 修改密碼
連接mysql這個數(shù)據(jù)庫,修改用戶密碼
mysql>?use?mysql; Reading?table?information?for?completion?of?table?and?column?names You?can?turn?off?this?feature?to?get?a?quicker?startup?with?-A Database?changed mysql>?update?mysql.user?set?authentication_string=password('root_password')?where?user='root'; Query?OK,?1?row?affected,?1?warning?(0.00?sec) Rows?matched:?1??Changed:?1??Warnings:?1 ? mysql>?flush?privileges; Query?OK,?0?rows?affected?(0.00?sec) ? mysql>?exit
4. 重啟mysql服務
先將之前加在配置文件里面的2句代碼注釋或刪除掉,然后重啟mysql服務,就可以使用剛剛設置的密碼登錄了。
[root@mytestlnx02?~]#?service?mysql?start [root@mytestlnx02?~]# [root@mytestlnx02?~]#?mysql?-u?root?-p Enter?password:? Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?g. p.s.
在CentOS上的操作方式有所不同。
執(zhí)行修改密碼的命令一直報錯
mysql>?update?user?set?authentication_string=password('xxxxxxxx')?where?User='root';??????? ERROR?1064?(42000):?You?have?an?error?in?your?SQL?syntax;?check?the?manual?that?corresponds?to?your?MySQL?server?version?for?the?right?syntax?to?use?near?'('root_password')?where?User='root''?at?line?1
不可能是語法問題,檢查了很多遍,最后發(fā)現(xiàn)CentOS下應該這樣操作:
查看初始密碼
[root@VM_0_8_centos?~]#?grep?'temporary?password'?/var/log/mysqld.log 2018-09-26T04:25:54.927944Z?5?[Note]?[MY-010454]?[Server]?A?temporary?password?is?generated?for?root@localhost:?DN34N/=?aIfZ
可以看到初始密碼為DN34N/=?aIfZ
使用初始密碼登錄
[root@VM_0_8_centos?~]#?mysql?-u?root?-p Enter?password:? Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?g. Your?MySQL?connection?id?is?8 Server?version:?8.0.12?MySQL?Community?Server?-?GPL Copyright?(c)?2000,?2018,?Oracle?and/or?its?affiliates.?All?rights?reserved.
修改密碼
mysql>?ALTER?USER?'root'?IDENTIFIED?BY?'xxxxxxxxx';?? ERROR?1820?(HY000):?You?must?reset?your?password?using?ALTER?USER?statement?before?executing?this?statement. mysql>?ALTER?USER?'root'@'localhost'?IDENTIFIED?BY?'xxxxxxxx'; Query?OK,?0?rows?affected?(0.11?sec) mysql>?flush?privileges; Query?OK,?0?rows?affected?(0.01?sec) mysql>?exit Bye 重啟服務
就生效了
[root@VM_0_8_centos?~]#?service?mysqld?stop? Redirecting?to?/bin/systemctl?stop??mysqld.service [root@VM_0_8_centos?~]#?service?mysqld?start Redirecting?to?/bin/systemctl?start??mysqld.service
推薦教程: 《linux教程》
? 版權聲明
文章版權歸作者所有,未經(jīng)允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦