出現(xiàn)此問題所安裝的mysql版本信息
mysql: 5.7.22-0ubuntu18.04.1
可在mysql環(huán)境下輸入命令select version();查看mysql版本信息,如圖:

問題描述
在終端每次都可以順利登錄進數(shù)據(jù)庫,可每次使用命令python dbdemo.py來運行這個文件的時候,就會報下面這個錯。
OperationError: (1698, "Access denied for user 'root'@'localhost'")

我在dbdemo.py中連接數(shù)據(jù)庫的配置信息如下:
app.db = torndb.Connection(
host="127.0.0.1",
database="testDb",
user="root",
password="123456"
)
解決辦法
其實我們要做的就是把root的plugin從“auth_socket”改為“mysql_native_password”,步驟如下:
- 在終端輸入
mysql進入mysql環(huán)境。 - 輸入命令
select user, plugin from mysql.user;,你會發(fā)現(xiàn)root用戶所對應的plugin為“auth_socket”,如下圖:
- 輸入命令
update mysql.user set authentication_string=PASSWORD('your new password'), plugin='mysql_native_password' where user='root';如下圖:
- 輸入命令
flush privileges;,如下圖:
-
再執(zhí)行一次命令,查看是否修改成功,如下圖:
- 輸入命令
exit;退出mysql環(huán)境,回到終端。如下圖:
- 然后輸入命令
sudo service mysql restart,重啟mysql服務。如下圖:
- 再次執(zhí)行命令
python dbdemo.py,你會發(fā)現(xiàn)不會再報錯了,如下圖:
連接成功后就能愉快地在瀏覽器上訪問我們存儲在數(shù)據(jù)庫中的數(shù)據(jù)了。
Have fun.






