pymysql-C

今天开始学习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() 都跑得动了,太感人了

猜你喜欢

转载自blog.csdn.net/weixin_42526305/article/details/83033535