pycharm远程连接MySQL时出现错误的解决方法

问题背景描述:利用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
  • 原因

    1. 远程端主机IP地址错误;
    2. 端口错误;
    3. 端口授权对象错误
  • 解决办法

    • MySQL服务的默认端口号为3306,如果自己没有指定mysql的端口号,那就填这个;

    • 打开服务器实例的安全组规则,确认入方向规则中已经打开了3306端口,并授权了你所在ip地址网段对象(下图所示设置表示只要ip地址在39.144.0.0~39.144.255.255范围内就被允许连接3306端口)

      pycharm远程连接MySQL时出现错误的解决方法_第1张图片

    • 登录阿里云控制台,找到你自己的云服务器ECS的公网IP地址

      pycharm远程连接MySQL时出现错误的解决方法_第2张图片

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帐户默认无法远程登陆。
  • 解决办法

    1. 利用远程登录工具登录云服务器(远程Linux主机),我用的是SSH登录方式,输入公网IP、用户名,端口号设为22;

    pycharm远程连接MySQL时出现错误的解决方法_第3张图片

    1. 输入登录密码后,显示登录成功。

    pycharm远程连接MySQL时出现错误的解决方法_第4张图片

    1. 设置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;
      
      #以上设置即时生效	
      FLUSH PRIVILEGES;
      

    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
    • 重启mysql服务
      • Linux下输入命令:service mysql restart
      • Windows下如何重启,你自行百度就好。
  • 最后,连接成功后,会打印链接对象的地址,并返回成功码0

pycharm远程连接MySQL时出现错误的解决方法_第5张图片

sql restart`
* Windows下如何重启,你自行百度就好。

  • 最后,连接成功后,会打印链接对象的地址,并返回成功码0

[外链图片转存中…(img-bbiv8ko7-1647087172156)]

更多内容关注我的微博Leon的博客

你可能感兴趣的:(嵌入式开发,mysql,pycharm,数据库)