Python3.7.2连不上Mysql 8.0的解决方案,亲测有效。

本人最近在做python课设,要用到mysql数据库,本来看菜鸟教程的操作,连接mysql数据库,结果报了“this authentication plugin is not supported”的错误,然后查看网上各种解决方案,但是都一样的,通过各种方式修改密码,但是并不奏效,没什么用,话不多说,上教程:

首先安装python的mysql包:

pip install pymysql

Python3.7.2连不上Mysql 8.0的解决方案,亲测有效。_第1张图片

一定要看到Successfully install 才行!安装好可以运行 pip list 看看:看有没有PyMySQL的包

Python3.7.2连不上Mysql 8.0的解决方案,亲测有效。_第2张图片

然后找到你的MySQL的安装目录:一定是bin目录下:

2669ee81eb0c4b748522e68451cafebf.png

然后在该栏输入cmd:cmd打开后,输入        mysql -u root -p,再输入你的数据库密码:登录到数据库;

Python3.7.2连不上Mysql 8.0的解决方案,亲测有效。_第3张图片

运行语句如下:其中123456是你的数据库密码!

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

 

 

 

 

这个SQL语句是什么意思呢?就是更换了root密码的认证方式解决的,新版mysql使用的caching_sha2_password,换成mysql_native_password。不报错即为成功

4ed17d290072436581264c222047cb39.png

然后就是用python连接数据库查询了。

# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.Connect(
  host='localhost',#你的数据库地址,或者用127.0.0.1
  port=3306,    #端口号
  user='root',    #数据库用户名
  passwd='123456',#数据库密码
  db='test',        #test为数据库名
  charset='utf8')#字符编码为utf-8
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 定义要执行的SQL语句
sql = 'SELECT * FROM `my_jdbctest`;'
# 执行SQL语句
cursor.execute(sql)
#打印执行结果
print(cursor.fetchall())
# 关闭光标对象
cursor.close()
# 关闭数据库连接
conn.close()

数据库中的表:

Python3.7.2连不上Mysql 8.0的解决方案,亲测有效。_第4张图片

 

运行python查询后的结果:

Python3.7.2连不上Mysql 8.0的解决方案,亲测有效。_第5张图片

查询结果显示不报错,接连成功,完毕。

 

 

 

 

 

你可能感兴趣的:(mysql,python)