Tornado: 使用torndb连接mysql时报错:Oper
2018-06-18 本文已影响11人
悟饭哪
出现此问题所安装的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”,步骤如下:
- 在终端输入
mysql
进入mysql环境。 - 输入命令
select user, plugin from mysql.user;
,你会发现root用户所对应的plugin为“auth_socket”,如下图:
- 输入命令
update mysql.user set authentication_string=PASSWORD('your new password'), plugin='mysql_native_password' where user='root';
如下图:
- 输入命令
flush privileges;
,如下图:
-
再执行一次命令,查看是否修改成功,如下图:
- 输入命令
exit;
退出mysql环境,回到终端。如下图:
- 然后输入命令
sudo service mysql restart
,重启mysql服务。如下图:
- 再次执行命令
python dbdemo.py
,你会发现不会再报错了,如下图:
连接成功后就能愉快地在浏览器上访问我们存储在数据库中的数据了。
Have fun.