pycharm远程连接MySQL时出现错误的解决方法
原创
©著作权归作者所有:来自51CTO博客作者leon_george的原创作品,请联系作者获取转载授权,否则将追究法律责任
问题背景描述:利用pycharm远程连接阿里云服务器上的MySQL数据库。
1. 远程连接代码
# 导入pymysql模块
import pymysql
def main():
# 连接阿里云服务器(公网IP:47.101.102.103)的mysql端口3306,并以用户名root和密码123456
# 远程登录mysql数据库,采用utf8字符集。
conn = pymysql.connect(host='47.101.102.103', port=3306,
user='root', passwd='123456',
db='mysql', charset='utf8')
# 打印链接对象的地址
print(conn)
# 得到一个可以执行SQL语句的光标对象(# 执行完毕返回的结果集默认以元组显示)
cursor = conn.cursor()
# 得到一个可以执行SQL语句并且将结果作为字典返回的游标
# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 定义要执行的SQL语句
cursor.execute("show databases;")
cursor.execute("use school;")
cursor.execute("show tables;")
cursor.execute("select * from tb_students")
# 关闭光标对象
cursor.close()
# 关闭数据库连接
conn.close()
if __name__ == '__main__':
main()
2. 报错情形
2.1 timed out
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '47.101.204.94' (timed out)")
Process finished with exit code 1
- 远程端主机IP地址错误;
- 端口错误;
- 端口授权对象错误
- MySQL服务的默认端口号为3306,如果自己没有指定mysql的端口号,那就填这个;
- 打开服务器实例的安全组规则,确认入方向规则中已经打开了3306端口,并授权了你所在ip地址网段对象(下图所示设置表示只要ip地址在39.144.0.0~39.144.255.255范围内就被允许连接3306端口)
- 登录阿里云控制台,找到你自己的云服务器ECS的公网IP地址。
2.2 not allowed to connect
pymysql.err.InternalError: (1130, "Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MariaDB server")
- Mysql未开启远程访问权限;
- root帐户默认无法远程登陆。
- 利用远程登录工具登录云服务器(远程Linux主机),我用的是SSH登录方式,输入公网IP、用户名,端口号设为22;
- 输入登录密码后,显示登录成功。
设置MySQL服务器,允许用户从任何主机连接到mysql
#在命令行界面,以root身份登录MySQL数据库
mysql -u root -p
#登录进mysql数据库后进入要设置的database,此处为mysql数据库
use mysql;
#允许任何IP地址(上面的%就是这个意思)的电脑以root用户和密码(password)来访问MySQL Server上的任意数据库(*.*代表MySQL里的任意database的任意table),并授予全部权限。你可以根据自己需要合理设置!!!
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
#以上设置即时生效
2.3 10061错误及1045错误
- 原因:root用户的权限不够,需要赋予root从任意ip地址登录数据库的权限。
- 解决方法
- LInux操作系统下,修改
/etc/mysql/my.cnf
文件,添加或修改bind-address地址为0.0.0.0,即bind-address=0.0.0.0
- Windows操作系统下,修改mysql配置文件
my.ini
,添加或修改bind-address地址为0.0.0.0,即bind-address=0.0.0.0
- Linux下输入命令:
service mysql restart
- Windows下如何重启,你自行百度就好。
- 最后,连接成功后,会打印链接对象的地址,并返回成功码0
sql restart`
* Windows下如何重启,你自行百度就好。
- 最后,连接成功后,会打印链接对象的地址,并返回成功码0
[外链图片转存中…(img-bbiv8ko7-1647087172156)]
更多内容关注我的微博Leon的博客