前情提要
总结下使用过的各种解决方式, 如修改cnf, 修改安全组端口, 修改防火墙, 总有一款方案适合你(如果使用其他方式解决请评论补充, 感谢)
环境: 本文全部使用yum方式安装服务, 使用阿里云服务器centos7
下文需要格外注意手动配置端口的部分
确认已安装好mysql服务
(yum安装)
# 查看服务运行状态
systemctl start mysqld
systemctl status mysqld
提示 Active: active (running) 即为已安装, 否则先自行安装mysql(本文使用yum安装)
阿里云安全组开启3306端口
22端口默认是开启的, 若未开启, 开启流程和3306一样
进入ECS控制台->左侧列表->网络与安全->安全组
手动添加->配置3306端口->配置允许任何ip访问(可手动指定)
测试3306, 22端口是否正常开启
这一步我在网上没找到类似的信息, 不清楚是不是阿里云新规则, http是要求80端口开放, 数据库3306好像不刚需防火墙开启因此没有相关博客, 我开启防火墙前不行, 开了之后就好了, 分享下开启流程
# 安装telnet
sudo yum update -y
sudo yum install telnet -y
# 使用telnet测试端口是否能访问
telnet 公网ip 22
telnet 公网ip 3306
如图, 若未响应或是提示失败, 需要手动开启防火墙端口(使用快捷键Ctrl+C退出trying)
# 查看是否开启3306端口, 默认不开启
firewall-cmd --list-all
# 开启3306防火墙端口 (--permanent参数: 永久开启)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
再次查看防火墙, 下图为正确开启端口样例
再次尝试telnet连接
# 使用telnet测试端口是否能访问
telnet 公网ip 22
telnet 公网ip 3306
使用navicat连接
如果提示1045错误, 创建新的数据库用户(不要使用root用户登录)
这个错误原因是, root用户默认只能localhost本机使用, 要么新增用户, 要么修改root可被所有主机访问(不推荐)
# 找到安装的mysql临时密码
grep 'A temporary password' /var/log/mysqld.log
# 登录mysql
mysql -uroot -p临时密码
# 可选, 修改root用户的临时密码
ALTER USER USER() IDENTIFIED BY '新密码';
# 如果没有权限, 将验证密码指定低安全等级和长度, 以支持123456等密码
set global validate_password_policy=LOW;
set global validate_password_length=6;
# 创建允许远程连接的新test用户, 并授予全部权限
create user 'test'@'%' identified by '密码';
GRANT ALL ON *.* TO 'test'@'%';
# 查看是否能远程访问, test对应%即可允许所有连接
select host, user from user;
使用新创建的用户连接navicat
标签:端口,开启,telnet,Navicat,2003,mysql,3306,防火墙 From: https://www.cnblogs.com/swordLC/p/18222095