引言:最近为了做微信公众号开发买了一台腾讯云Linux CentOs7.6服务器,在服务器上安装完了JDK1.8之后,开始安装Mysql5.7数据库。Linux系统下下载、安装Mysql5.7数据库服务器已是不易,没想到安装好之后一直无法使用客户端Navicat远程访问,在CSDN博客上搜索解决方案时也发现很多同行小伙伴遇到相同的问题。但是福哥通过参考了多篇博客和一篇百度经验的解决思路后,终于解决了Navicat远程连接Mysql5.7服务端的问题了。于是感到有必要分享一下自己在云服务器上安装Mysql5.7数据库,并解决客户端远程访问难题的历程,希望能帮助到更多遇到相同问题的同行小伙伴!
本文的Mysql数据库是安装在linux系统下的云服务器上,因此需要下载Linux系统对应的Mysql5.7版本的rpm包,笔者选择安装的是mysql5.7.29版本。Linux系统下也可以使用yum --y install 命令
可至官网下载mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar包
下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#download
系统选项选择: Red HatEnterprise Linux/Oracle Linux系统,下载的包选择mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar包,大小有529.5M,下载速度非常慢,笔者已将下载好的包上传到了百度云盘,有需要的同行小伙伴可以关注我的微信公众号“程序员阿福”,然后在公众号消息中发送关键字“mysql5.7”获取本人在百度云盘上的下载链接和二维码
1) 使用xshell6 工具用root账户和密码登录linux服务器,登录成功后执行cd /usr/local 命令进入 /usr/local目录 ,在当前目录下 执行mkdir mysql5.7命令新建目录mysql5.7;
2) 使用xftp6 将本地下载好的mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar包上传到linux系统下的mysql5.7目录,并执行tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar命令将文件解压
上图是笔者解过压,并删除mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar包后的mysql5.7文件列表截图,解压出来有10个rpm包
3) 检测服务器系统是否已经安装了mysql,使用如下命令查看
rpm -qa | grep mysql
如果已经安装了需要执行如下命令将其卸载,卸载命令如下:
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
(mysql-libs-5.1.71-1.el6.x86_64是执行上一步指令查询出的mysql包名)
4) 查看 centos7自带的MariaDB数据库是否存在,执行如下指令:
rpm -qa |grep -i mariadb
执行后的结果如下:
mariadb-libs-5.5.56-2.el7.x86_64
安装mysql的时候可能会和MariaDB有冲突,所以需要执行如下命令将其删除:
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
5) 依次执行下面的安装指令,安装4个rpm文件
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
发现在执行最后一条命令时报错,错误信息如下:
error: Failed dependencies:
libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.29-1.el7.x86_64
libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-5.7.29-1.el7.x86_64
libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-5.7.29-1.el7.x86_64
在网上查了一下资料,发现是没有安装numactl镜像包,执行如下命令安装
yum -y install numactl
然后再次执行如下命令:
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
这次终于安装成功!
1) 首先执行如下指令将mysql添加到系统服务中去:
systemctl start mysqld.service
2) 执行如下指令启动mysql服务:
service mysqld start
可通过下面的命令查看mysql服务器的运行状态:
service mysqld status
控制台中"Active: active (running)"显示mysql服务已处于运行状态
1) 由于Mysql服务首次启动时的密码是临时分配的,存在于日志文件中,因此需要执行如下命令查看mysql的默认配置文件位置:
mysqld --verbose --help |grep -A 1 'Default options'
查到系统将按以下优先级顺序读取mysql配置文件中的默认属性
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf
我们先查看/etc/my.cnf 文件中的内容,看能否找到mysql启动日志文件配置
cat /etc/my.cnf
可以看到mysql的启动日志文件为 /var/log/mysqld.log,因此执行如下命令查看日志文件
cat /var/log/mysqld.log
查到root用户首次连接本地Mysql服务时用到的密码为:L3Pkw+(wegEQ
2) 使用上一步查到的临时密码登录mysql服务,登录成功后改登录root用户密码
修改用户登录密码的sql脚本为:set password = password('你要设置的密码'),如果当前密码设置提示策略太简单了,就点击下面这篇博文进行密码规则设置
https://blog.csdn.net/qq_37906257/article/details/83550058
4) 为了方便使用Navicat等数据库软件远程连接,需要开启外部远程访问权限,而不仅仅限制在本机连接
在服务端执行如下sql语句,给root用户赋予任何主机使用root账号都能连接Mysql服务器的权限
mysql-> grant all privileges on *.* to 'root'@'%' identified by '';
5) 修改/etc/my.cnf配置文件中的bind_address值为0.0.0.0
vim /etc/my.cnf
修改完成后按esc键回车后输入: wq!保存退出
6) 防火墙开放mysql 3306端口
执行如下命令查看防火墙是否开启
systemctl status firewalld
发现服务器防火墙是开启的,然后依次执行下面的两条命令开放3306端口,并刷新防火墙
firewalld-cmd --zone=public --add-port=3306/tcp --permanent
firewalld-cmd --reload
然后执行netstat -anpt命令查看服务器所有开放监听的端口,看是否包含3306端口:
可以看到3306端口处于被监听状态
7) 通过腾讯云助手小程序进入购买的云服务器管理界面,在安全组中添加入Mysql3306端口的入站规则(很多小伙伴和笔者一样,都是因为没有在云服务器实例安全组中添加入站规则才导致的远程navicat连接Mysql服务器是一直报未知错误),首先从微信进入腾讯云助手公众号,进入云服务器,添加mysql数据库3306端口入站规则步骤图如下:
8) 执行systemctl restart mysqld命令重启mysql服务
9) 使用Navicat客户端程序远程连接云服务器上的mysql
本文主要讲述了云服务上Linux系统下mysql5.7.29的下载、安装,数据库用户密码重置、给root用户配置所有客户机可连接云服务器上mysql服务的权限,并使用防火墙相关命令开放了3306端口;通过在云服务实例的安全组设置中添加Mysql3306端口的入站规则解决了很多同行小伙伴反映的无法使用Navicat客户端远程连接云服务器上的mysql服务的问题。
1) centos7安装Mysql5.7.24教程;
链接:https://blog.csdn.net/qq_37906257/article/details/83550058
2) MySQL在本地能连接上,远程连接不上的解决办法;
链接:https://jingyan.baidu.com/article/380abd0a3aef431d90192c33.html