问题背景描述:利用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时出现错误的解决方法_ip地址

  • 登录阿里云控制台,找到你自己的云服务器ECS的公网IP地址
  • pycharm远程连接MySQL时出现错误的解决方法_ip地址_02

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;
  1. 输入登录密码后,显示登录成功。
  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;

    #以上设置即时生效

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时出现错误的解决方法_mysql数据库_03

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

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

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

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