连不上3306端口一般有三种情况。
1 .本机上防火墙没有开放3306端口,需要自己配置入站规则,或者关闭本机防火墙。
2 .linux 服务器上的 iptables 防火墙没有开放3306端口, 或者关闭服务器上的防火墙。
打开
/etc/sysconfig/iptables
在
"-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT"
,下添加:
-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT
3 .没有给mysql用户远程权限
mysql> USE mysql;
-- 切换到 mysql DB
Database changed
mysql> SELECT User, Password, Host FROM user;
-- 查看现有用户,密码及允许连接的主机
+------+----------+-----------+
| User | Password | Host |
+------+----------+-----------+
| root | | localhost |
+------+----------+-----------+
1 row in set (0.00 sec)
mysql> -- 只有一个默认的 root 用户, 密码为空, 只允许 localhost 连接
12
mysql> -- 下面我们另外添加一个新的 root 用户, 密码为空, 只允许 192.168.1.100 连接
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '' WITH GRANT OPTION;
mysql> -- @'192.168.1.100'可以替换为@‘%’就可任意ip访问,当然我们也可以直接用 UPDATE 更新 root 用户 Host, 但不推荐, SQL如下:
mysql> -- UPDATE user SET Host='192.168.1.100' WHERE User='root' AND Host='localhost' LIMIT 1;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
修改root密码
mysql> use mysql
Database changed
mysql> update userset password=PASSWORD('123456')where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
以上三种原因都试过没有解决并且你是阿里云服务器看下面;
去阿里云服务器的控制器配置安全组规则,
点击云服务器ESC->网络和安全->安全组;进入点击最后的 配置规则,
啊然后看没有3306端口,添加安全组规则,添加
协议类型:MY SQL(3306);
授权对象:0.0.0.0/0
然后验证通过,等会再试连接即可成功。
这样对于一般的阿里云用户连接不上3306端口都能解决。