赞
踩
- import pymysql
- conn =pymysql.connect(host='192.168.229.130',
- port=3306,
- user='root',
- passwd='123456',
- db='mysql',
- charset='utf8mb4'
- )
- cur =conn.cursor(pymysql.cursors.DictCursor)
- try:
- create_sqli = "create table hello (id int, name varchar(30));"
- cur.execute(create_sqli)
- except Exception as e:
- print("创建数据表失败:", e)
- else:
- print("创建数据表成功;")
在连接mysql数据库的过程中遇到了连接不上的情况排查问题如下:
1、首先测试了一下telnet IP 3306 发现端口不通,于是查看虚拟机3306端口是否有被占用的情况,losf -i:3306 发现是mysql在使用,于是在Windows主机上的继续使用telnet IP 22 查看22端口也是一样的情况,于是就关闭了防火墙,成功解决3306端口不通问题。
telnet IP 3306
losf -i:3306
telnet IP 22
systemctl status firewalld.service
这里关闭防火墙主要是为了省事,也可以使用添加端口过滤
firewall-cmd --add-port=3306/tcp --permanent
2、解决了3306端口问题,发现依然无法连接上数据库,python报错
RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods
这个错误出现的原因是在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。
pip install cryptography
可以成功解决连接数据库成功,当然也可以通过修改数据库的加密规则来解决上面这个问
- ALTER USER 'root'@'localhost' IDENTIFIED BY '你的mysql密码' PASSWORD EXPIRE NEVER;
-
- #修改加密规则
-
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的mysql密码';
- #修改密码
-
- FLUSH PRIVILEGES; #刷新数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。