外网连接不到Mysql

最近在亚马逊云主机上安装MySQL,想远程访问,结果无论如何都访问不了。在踩了若干坑之后,终于访问成功了,在此做一下记录:EC2上安装了MySQL后如何开启远程访问。

一、遇到的问题
想远程访问EC2上的MySQL,总提示: 
ERROR 2003 (HY000): Can't connect to MySQL server on 'xx.xx.xx.xx' (111) 
或者 
Host 'xx.xx.xx.xx' is not allowed to connect to this MySQL server

二、解决方案

1、设置EC2的防火墙

EC2默认防火墙是阻断所有流量,因此在EC2的Scurity Groups中除了其他必要的规则之外,还要添加一条入口流量规则:TCP的3306端口的任意源IP的连接都允许。

2、MySql中设置用户的访问
MySQL默认只允许从本机访问,要使得能够远程访问,分别在Terminal中执行以下命令:
mysql -u root -p
use mysql
update user set Host='%' where User='root'
这样就能从任意IP访问MySql了。

3、MySQL中设置绑定IP
sudo vim /etc/mysql/my.cnf1
然后把bind-address 127.0.0.1改为bind-address 0.0.0.0,这样EC2的IP无论怎样变化,都能够远程访问了。

4、重启MySQL
sudo /etc/init.d/mysql restart
外网连接本地电脑MySQL通常涉及到设置数据库服务器的网络权限以及端口转发。以下是基本步骤: 1. **确认MySQL配置**: 确保MySQL服务已经启动,并允许远程访问。在MySQL命令行中运行`SHOW VARIABLES LIKE 'bind-address';`检查bind-address是否为'0.0.0.0'或'%',如果是,则表示可以接受来自所有地址的连接。 2. **修改my.cnf文件** (Windows/Linux) : 找到my.cnf或my.ini文件(通常位于`<MySQL安装路径>/conf`下),编辑[mysqld]部分,添加 `bind-address=0.0.0.0` 或将`skip-networking`注释掉,允许网络连接。 3. **设置root用户密码**: 如果还没有为root用户设置密码,通过命令行工具如`mysql_secure_installation`安全地创建并设置。 4. **防火墙设置**: 需要在操作系统防火墙上打开3306端口,以便从外部访问。如果是Linux,可以用ufw或iptables进行设置;Windows则需要在系统防火墙里放行。 5. **配置远程连接**: 可以在MySQL中创建一个新的用户,赋予该用户远程连接的权限。例如: ``` GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; ``` 6. **端口转发** (如果在内网): 如果你的网络环境不允许直接公网访问,你可以设置一个端口转发规则,比如在路由器上做NAT映射,将外部请求转发到本地的3306端口。 7. **测试连接**: 使用数据库管理工具(如Navicat、phpMyAdmin等)或者在Python、PHP等语言中尝试连接测试。 8. **注意事项**: - 为了安全性考虑,只在必要时启用外网访问,并定期更改root用户的密码。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值