Tornado: 使用torndb連接mysql時(shí)報(bào)錯(cuò):OperationError: (1698, "Access denied for user 'root'@'localhost'")

出現(xiàn)此問(wèn)題所安裝的mysql版本信息

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

問(wèn)題描述

在終端每次都可以順利登錄進(jìn)數(shù)據(jù)庫(kù),可每次使用命令python dbdemo.py來(lái)運(yùn)行這個(gè)文件的時(shí)候,就會(huì)報(bào)下面這個(gè)錯(cuò)。
OperationError: (1698, "Access denied for user 'root'@'localhost'")

我在dbdemo.py中連接數(shù)據(jù)庫(kù)的配置信息如下:

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

解決辦法

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

  1. 在終端輸入mysql進(jìn)入mysql環(huán)境。
  2. 輸入命令select user, plugin from mysql.user;,你會(huì)發(fā)現(xiàn)root用戶所對(duì)應(yīng)的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. 再執(zhí)行一次命令,查看是否修改成功,如下圖:


  6. 輸入命令exit;退出mysql環(huán)境,回到終端。如下圖:
  7. 然后輸入命令sudo service mysql restart,重啟mysql服務(wù)。如下圖:
  8. 再次執(zhí)行命令python dbdemo.py,你會(huì)發(fā)現(xiàn)不會(huì)再報(bào)錯(cuò)了,如下圖:

連接成功后就能愉快地在瀏覽器上訪問(wèn)我們存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)了。

Have fun.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容