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.

你可能感兴趣的:(Tornado: 使用torndb连接mysql时报错:OperationError: (1698, "Access denied for user 'root'@'localhost'"))