使用flask部署mysql,发现一直无法远程连接
具体报错如下,意思是我的公网无法远程连接到mysql
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '120.26.201.55' ([Errno 111] Connection refused)")
(Background on this error at: https://sqlalche.me/e/20/e3q8)
使用 show variables like 'bind_address'; 命令查看一下mysql监听的端口号,Value为 127.0.0.1,表示mysql只监听本地回环地址,不允许远程连接

解决方法:
1. use mysql #切换到mysql
2. update user set host='%' where user='root'; #将root用户的host设置为 ’%’,表示所有地址均可使用root登录mysql
3. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; #grant给root用户授予所有权限
4. FLUSH PRIVILEGES; #刷新一下权限设置
网上看到其他方法使用的授予权限命令为:grant all privileges on *.* to root@'%' identified by "password";,但我使用这个命令时会报错,mysql 8.0 中,使用 GRANT 语句授予特定权限时,语法有一些变化,使用我上面的命令即可正常运行
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by "password" at line 1
注意:做完上述修改之后一定要重启mysql服务!!!!使命令生效
systemctl restart mysql
现在再次查看mysql监听的地址,已经修改为0.0.0.0,即所有地址均允许远程连接

用 Navicat 测试一下,连接成功!

文章讲述了在使用Flask部署MySQL时遇到的远程连接问题,原因在于MySQL默认仅监听本地。作者提供了修改MySQL配置(如设置root用户可从任何地址访问)、更新权限并重启服务的步骤,以确保远程连接成功。
622

被折叠的 条评论
为什么被折叠?



