解决mysql无法远程登陆

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

使用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 测试一下,连接成功!
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值