阿里云ecs上安装了mysql但是外网访问不了

阿里云ecs上安装了mysql但是外网访问不了

步骤
使用yum安装mysql server
启动mysql
grant 一个用户 允许所有host访问
重起mysql

这是mysql库中的user表

mysql> select host,user from user;
+-------------------------+---------+
| host                    | user    |
+-------------------------+---------+
| %                       | dbadmin |
| %.%.%.%                 | icyfc   |
| 127.0.0.1               | root    |
| iz8vb8il84z4prxo5ljzqjz |         |
| iz8vb8il84z4prxo5ljzqjz | root    |
| localhost               |         |
| localhost               | root    |
+-------------------------+---------+
[root@iZ8vb8il84z4prxo5ljzqjZ ~]# netstat -tunpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      2630/php-fpm        
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      32007/mysqld        
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      2805/nginx          
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      15354/sshd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1555/master         
udp        0      0 172.26.13.175:123           0.0.0.0:*                               1464/ntpd           
udp        0      0 127.0.0.1:123               0.0.0.0:*                               1464/ntpd           
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               1464/ntpd           
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1060/dhclient       
[root@iZ8vb8il84z4prxo5ljzqjZ ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:mysql 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  
阅读 13.3k
6 个回答

1 阿里云ECS有安全组防火墙.默认只开了ICMP,22,3389. 在服务器控制台找到 安全组-配置规则-添加安全组规则

图片描述

2 如果是用root登录MySQL,在登陆后use mysql, user表root对应的localhost改为%

3 mysql默认只能自本机访问,在 /etc/mysql/mysql.conf.d/mysqld.cnf 里注释bind-address : #bind-address = 127.0.0.1
操作完成后重启mysql服务: service mysql restart

4 netstat -ntpl |grep 3306 检查是不是在监听状态

5 防火墙是否对 mysql 端口限制,设置防火墙

有以上5步应该没问题了

  • mysql是否运行在0.0.0.0地址上面

  • 防火墙和安全组是否放行端口

  • mysql用户是否授予了远程访问权限

建议使用ssh代理访问数据库,这样安全一点

是域名访问的,还是IP,域名的话直接授权就行,IP就得根据实际的了,不能是随机获取的

会不会是因为阿里云安全组的设置,没有允许端口通过

主要做以下3步, 希望声望上 k :)


  1. 每个ECS都有安全组防火墙的, 首先请检查这个地方的 3306 tcp 入网 0.0.0.0/0 是否ok ?

  2. 然后检查登录用户的 host == % 吗 ? (可以先刷新权限)

FLUSH PRIVILEGES

3 . 检查是否是系统自带防火墙拦截

阿里云出于安全考虑会限制接入的ip地址段,你可以授权你的外网ip或ip段,尽量不要设置成全网接入,有安全问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏