今天开始学习python与数据库mysql的连接,大大小小遇到了不少问题,这里记下弄得我最头痛的一个Error:
internalError:(1689:Access denied for user ‘root’@localhost… 比较麻烦的是这个报错搜索的话,全是改密码的教程,我想着我也不是登录不了啊……在终端sudo登录的很舒服啊。
sudo? python代码中,写的是这:
from pymysql import *
conn = connect(host="localhost", port=3306, user="root", password = "mysql",database = "pythono1",charset="utf8")
显然这里是没有涉及到sudo权限的,所以解决的方向,应该是取消sudo这一mysql登录权限。参照https://blog.csdn.net/NepalTrip/article/details/82116607,进入mysql,
use mysql;
select user,host,plugin from user;
flush privileges;
查看用户的权限(root的plugin属性),是否是mysql_native_password,如果是auth_sock,则改为mysql_native_password。
然后验证: 登录mysql: mysql -u root, 不需要-p,如果加上-p会出现如下报错:
这个报错呢,比较尴尬的是有两种类似的,还有一种是using password:NO, 没注意的话,真的要被搜出来的结果绕的晕死。这里是不需要-p,即不需要密码,相应的,python语句中,也应该将passwd删掉,如下:
总算是没有报错了。问题算是得到解决了吧。root这样设置之后,不需要密码,如果有需要,可以使用语句为其加上密码,其实就是一般的表的SQL操作,对象表是mysql数据库里的user表。
总之,数据库终于连上了,什么exucute()、fetchone() 都跑得动了,太感人了