腾讯云 远程通过端口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
即可。
配置安全组
- 在进入到腾讯云控制台之后,左边可以看到一个
安全和诊断
,里面展开之后点击安全组
。
- 选自己 云服务器 所在的地区,比如我这里是北京
- 点击新建然后弹出的对话框,其他的比较简单,就以自定义为例,点击确定后的对话框中选设置规则
- 添加入站和出站规则即可, 示例如下,配置所有ip可访问3306端口。
完成上面的步骤之后,在本地用telnet ip 3306
ip替换为自己的,如果没有提示refused等,那就没有什么问题了,用其他GUI(比如Sqlyog,或者navicat)客户端来访问即可。
作者:叉叉敌
博客:https://chasays.github.io/
微信公众号:Chasays, 欢迎关注一起吹牛逼,也可以加个人微信号「xxd_0225」互吹。
本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。