Tornado: 使用torndb連接mysql時報錯:OperationError: (1698, "Access denied for user 'root'@'localhost'")

出現此問題所安裝的mysql版本信息

mysql: 5.7.22-0ubuntu18.04.1
可在mysql環境下輸入命令select version();查看mysql版本信息,如圖:

問題描述

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

我在dbdemo.py中連接數據庫的配置信息如下:

app.db = torndb.Connection(
        host="127.0.0.1",
        database="testDb",
        user="root",
        password="123456"
)

解決辦法

其實我們要做的就是把root的plugin從“auth_socket”改爲“mysql_native_password”,步驟如下:

  1. 在終端輸入mysql進入mysql環境。
  2. 輸入命令select user, plugin from mysql.user;,你會發現root用戶所對應的plugin爲“auth_socket”,如下圖:
  3. 輸入命令update mysql.user set authentication_string=PASSWORD('your new password'), plugin='mysql_native_password' where user='root'; 如下圖:
  4. 輸入命令flush privileges;,如下圖:
  5. 再執行一次命令,查看是否修改成功,如下圖:


  6. 輸入命令exit;退出mysql環境,回到終端。如下圖:
  7. 然後輸入命令sudo service mysql restart,重啓mysql服務。如下圖:
  8. 再次執行命令python dbdemo.py,你會發現不會再報錯了,如下圖:

連接成功後就能愉快地在瀏覽器上訪問我們存儲在數據庫中的數據了。

Have fun.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章