Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug

引言:最近为了做微信公众号开发买了一台腾讯云Linux CentOs7.6服务器,在服务器上安装完了JDK1.8之后,开始安装Mysql5.7数据库。Linux系统下下载、安装Mysql5.7数据库服务器已是不易,没想到安装好之后一直无法使用客户端Navicat远程访问,在CSDN博客上搜索解决方案时也发现很多同行小伙伴遇到相同的问题。但是福哥通过参考了多篇博客和一篇百度经验的解决思路后,终于解决了Navicat远程连接Mysql5.7服务端的问题了。于是感到有必要分享一下自己在云服务器上安装Mysql5.7数据库,并解决客户端远程访问难题的历程,希望能帮助到更多遇到相同问题的同行小伙伴!

1 下载Mysql5.7的rpm包

 本文的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

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第1张图片

系统选项选择: Red HatEnterprise Linux/Oracle Linux系统,下载的包选择mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar包,大小有529.5M,下载速度非常慢,笔者已将下载好的包上传到了百度云盘,有需要的同行小伙伴可以关注我的微信公众号“程序员阿福”,然后在公众号消息中发送关键字“mysql5.7”获取本人在百度云盘上的下载链接和二维码

2 安装Mysql5.7.29

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命令将文件解压

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第2张图片

上图是笔者解过压,并删除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

这次终于安装成功!

3 启动Mysql服务并修该root用户登录密码

1) 首先执行如下指令将mysql添加到系统服务中去:

systemctl start mysqld.service

2) 执行如下指令启动mysql服务:

service mysqld start

可通过下面的命令查看mysql服务器的运行状态:

service mysqld status

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第3张图片

控制台中"Active: active (running)"显示mysql服务已处于运行状态

4 修改Mysql服务root账户密码,并设置远程客户端可连接

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

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第4张图片

可以看到mysql的启动日志文件为 /var/log/mysqld.log,因此执行如下命令查看日志文件

cat  /var/log/mysqld.log

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第5张图片

查到root用户首次连接本地Mysql服务时用到的密码为:L3Pkw+(wegEQ

2) 使用上一步查到的临时密码登录mysql服务,登录成功后改登录root用户密码

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第6张图片

修改用户登录密码的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

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第7张图片

修改完成后按esc键回车后输入: wq!保存退出

6) 防火墙开放mysql 3306端口

  执行如下命令查看防火墙是否开启

systemctl status firewalld

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第8张图片

发现服务器防火墙是开启的,然后依次执行下面的两条命令开放3306端口,并刷新防火墙

firewalld-cmd --zone=public --add-port=3306/tcp --permanent
firewalld-cmd --reload

然后执行netstat -anpt命令查看服务器所有开放监听的端口,看是否包含3306端口:

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第9张图片

可以看到3306端口处于被监听状态

7) 通过腾讯云助手小程序进入购买的云服务器管理界面,在安全组中添加入Mysql3306端口的入站规则(很多小伙伴和笔者一样,都是因为没有在云服务器实例安全组中添加入站规则才导致的远程navicat连接Mysql服务器是一直报未知错误),首先从微信进入腾讯云助手公众号,进入云服务器,添加mysql数据库3306端口入站规则步骤图如下:

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第10张图片

8) 执行systemctl restart mysqld命令重启mysql服务

9) 使用Navicat客户端程序远程连接云服务器上的mysql

Linux系统云服务器上安装Mysql5.7数据库,解决不能远程访问的bug_第11张图片

5 小结

    本文主要讲述了云服务上Linux系统下mysql5.7.29的下载、安装,数据库用户密码重置、给root用户配置所有客户机可连接云服务器上mysql服务的权限,并使用防火墙相关命令开放了3306端口;通过在云服务实例的安全组设置中添加Mysql3306端口的入站规则解决了很多同行小伙伴反映的无法使用Navicat客户端远程连接云服务器上的mysql服务的问题。

 

6 参考文献

1) centos7安装Mysql5.7.24教程;

    链接:https://blog.csdn.net/qq_37906257/article/details/83550058

2) MySQL在本地能连接上,远程连接不上的解决办法;

    链接:https://jingyan.baidu.com/article/380abd0a3aef431d90192c33.html

你可能感兴趣的:(mysql,linux)