腾讯云 远程通过端口3306访问MYSQL数据库

背景

网上自己找了一圈,要么就是资料太老,要么就是太简单,比较零散。
强行提笔,总结一下,关于腾讯云 mysql8.0 开启3306端口,用远程非本地访问数据库。

安装 Mysql8

可以执行下面的命令就可以安装了,并设置为开机自启动。

wget -i -c https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server
systemctl start  mysqld.service
systemctl status mysqld.service

修改和安全策略

# 获取临时密码
grep "password" /var/log/mysqld.log
# 登陆并修改密码
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

# 查看安全策略并修改
SHOW VARIABLES LIKE 'validate_password%';
set global validate_password.policy=0;
set global validate_password.length=1;

配置mysql

设置所有的ip可以访问该sql;

# 切换数据库
use mysql;
update mysql.user set host = '%' where user = 'root';

MySql 8.0版本修改了默认的加密规则,用Navicat连接会报错,解决办法为执行如下语句

#'root'@'%' 中root为用户名,'%'为user表host字段的值。'pasword'为用户密码。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'pasword';

配置防火墙

检查并配置防火墙

# 检查状态 
systemctl stauts firewalld.service 
# 其余还有 开始,重启等
systemctl start firewalld.service
systemctl restart firewalld.service

# 开机自启动
systemctl enable firewalld.service

#配置防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --query-port=3306/tcp # 检查是否ok

如果启动防火墙 Failed to start firewalld.service 的时候遇到这个问题。Failed to start firewalld.service: Unit is masked.,只要继续输入 systemctl unmask firewalld.service ,然后在执行 start 即可。

配置安全组

  1. 在进入到腾讯云控制台之后,左边可以看到一个安全和诊断,里面展开之后点击安全组
    在这里插入图片描述
  2. 选自己 云服务器 所在的地区,比如我这里是北京
    在这里插入图片描述
  3. 点击新建然后弹出的对话框,其他的比较简单,就以自定义为例,点击确定后的对话框中选设置规则
    在这里插入图片描述
  4. 添加入站和出站规则即可, 示例如下,配置所有ip可访问3306端口。
    在这里插入图片描述
    完成上面的步骤之后,在本地用 telnet ip 3306 ip替换为自己的,如果没有提示refused等,那就没有什么问题了,用其他GUI(比如Sqlyog,或者navicat)客户端来访问即可。
    在这里插入图片描述
posted @ 2019-10-25 22:09  叉叉敌  阅读(248)  评论(0编辑  收藏  举报