mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)錯誤解決辦法


 

我的電腦是win10,所用的是mysql5.7.14

近期在學習mysql數據庫的時候,遇到了這個錯誤,我的密碼錯誤了。突如其來的問題,很是蒙蔽,因為我沒對數據庫設置過密碼。通過網上查詢,可以通過進入mysql命令行的方式,來直接修改數據庫的密碼。具體步驟如下:

在mysql數據庫的my.ini文件中找到mysqld這一項:

用記事本打開,找到mysqld,並往其中添加skip-grant-tables

然后上面的就變成:

[mysqld]

skip-grant-tables

port=3306

這句話的意思是,跳過驗證,這個在開發的時候是很有幫助的,因為在我們忘記密碼以后可以很方便的修改數據庫密碼的,但是,為了安全,這個選項不能一直存在。

然后保存並在windows服務中重啟mysql服務,進入mysql所在路徑下的bin目錄中,運行如下指令:

mysql -u root -p

對於彈出的enter password可以直接一個回車跳過,從而進入mysql命令行。在mysql命令行中 使用如下指令修改密碼:

1 use mysql;
2 update user set password=password("123456") where user="root";

但是在實際用的時候,這個報錯了,顯示mysql數據庫中沒有password這一列,這就很奇怪了,因為這個是每個數據庫自帶的一項,查了資料才知道,在mysql5.7.14中,password字段被改成了 authentication_string,修改上述指令的第二行為:

update mysql.user set authentication_string=password('root') where user='root' ;

這樣就實現了對密碼的修改,然后刷新一下數據庫:

flush privileges;

接着退出,並把my.ini文件中添加的那一項去掉,並重啟數據庫服務,就能在python腳本中訪問了。
在訪問中,又遇到了一個新的問題,1862 Your password has expired. To log in you must change it using a client,

並且提示mysql error You must reset your password using ALTER USER statement before executing this statement.對於這個問題,需要調用如下指令:

1 alter user user("root") identified by "new_password";

然后刷新數據庫。這樣就能完整的解決以上的報錯問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM