一:概述
这几天开始学习linux相关知识的内容,于是跟着视频学着怎么样再linux中安装这个mysql,发现这个安装过程较Windows安装还是有一些麻烦的。视频上讲的Mysql版本比较老,于是就想着下载一个比较新版本并且比较稳定的mysql8.4.3版本。本文将基于CentOS7平台安装这个版本的mysql进行详细的讲解。我将从官网下载到最终使用提供详细的过程。
二:具体说明
<1>官网下载mysql安装包
下载下方图片对应的安装包。
如果你觉得这个过程比较繁琐,可以使用下面的链接去下载这个为你准备好的安装包。
<2>通过远程传输工具将这个压缩包传输到对应CentOS7服务器中
2.1 在linux服务器上的/usr/local目录中新建一个目录soft
mkdir /usr/local/soft
2.2 通过原创传输工具将第一步下载好的压缩包传输到这个目录中
传输完成后,在/usr/locla/soft目录下通过ls命令查看是否有传输过来的这个文件
如果可以看到这个压缩包证明传输并且接收成功。
2.3 解压缩文件
2.3.1 在/usr/local/soft目录下,新建一个mysql的文件夹
mkdir /usr/local/soft/mysql
2.3.2 在这个mysql文件夹中新建一个mysql8的文件夹
mkdir /usr/local/soft/mysql/mysql8
2.3.3 通过tar命令来解压缩这个文件到这个mysql8文件夹中
tar -xvf mysql-8.4.3-1.el7.x86_64.rpm-bundle.tar -C /usr/local/soft/mysql/mysql8
2.3.4 进入到mysql8文件夹中,通过ls命令查看解压缩是否成功
cd /usr/local/soft/mysql/mysql8
ls
如果通过命令查看到该目录下有以下的文件时,证明解压缩成功。
mysql-community-client-8.4.3-1.el7.x86_64.rpm
mysql-community-client-plugins-8.4.3-1.el7.x86_64.rpm
mysql-community-common-8.4.3-1.el7.x86_64.rpm
mysql-community-debuginfo-8.4.3-1.el7.x86_64.rpm
mysql-community-devel-8.4.3-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.4.3-1.el7.x86_64.rpm
mysql-community-icu-data-files-8.4.3-1.el7.x86_64.rpm
mysql-community-libs-8.4.3-1.el7.x86_64.rpm
mysql-community-libs-compat-8.4.3-1.el7.x86_64.rpm
mysql-community-server-8.4.3-1.el7.x86_64.rpm
mysql-community-server-debug-8.4.3-1.el7.x86_64.rpm
mysql-community-test-8.4.3-1.el7.x86_64.rpm
2.3.5 解压缩mysql8这个文件夹中的压缩包
在正式解压缩之前需要做一些准备。
2.3.5.1 通过rpm -qa检测当前系统是否安装过mysql相关的数据库
rpm -qa | grep mysql
我的命令输入后显示了已经安装的相关文件。如果你未安装过,这个是不会显示相关的软件包的。
2.3.5.2 卸载mariadb软件
由于CentOS7中默认自带了数据库mariadb软件,所以为了避免后续安装过程中出现错误,所以需要卸载这个软件。可以通过rpm查看是否有这个文件然后通过相关命令删除这个软件包。详细的过程如下所示:
rpm -qa | grep mariadb
由于我已经卸载了这个软件包,所以什么都没显示,正常情况下,你这块会显示有这个安装包的。
可以通过以下的命令去卸载这个安装包。
rpm -e --nodeps mariadb-libs-5.5.60-1.e17_5.x86_64
这些准备过程完成之后,就可以解压缩这个mysql8中的压缩包了。
2.3.5.3 解压缩相关文件
通过以下的命令去解压缩
# 安装通用包
sudo rpm -ivh mysql-community-common-8.4.3-1.el7.x86_64.rpm
# 安装客户端插件
sudo rpm -ivh mysql-community-client-plugins-8.4.3-1.el7.x86_64.rpm
# 安装库文件
sudo rpm -ivh mysql-community-libs-8.4.3-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-compat-8.4.3-1.el7.x86_64.rpm
# 安装icu数据文件
sudo rpm -ivh mysql-community-icu-data-files-8.4.3-1.el7.x86_64.rpm
# 安装开发包
sudo rpm -ivh mysql-community-devel-8.4.3-1.el7.x86_64.rpm
# 安装客户端工具
sudo rpm -ivh mysql-community-client-8.4.3-1.el7.x86_64.rpm
yum install net-tools
# 安装服务器包
sudo rpm -ivh mysql-community-server-8.4.3-1.el7.x86_64.rpm
# 如果有以下需求可以安装以下的包
# 调试包
sudo rpm -ivh mysql-community-server-debug-8.4.3-1.el7.x86_64.rpm
# 测试包
sudo rpm -ivh mysql-community-test-8.4.3-1.el7.x86_64.rpm
# 调试信息包
sudo rpm -ivh mysql-community-debuginfo-8.4.3-1.el7.x86_64.rpm
在安装 mysql-community-test-8.4.3-1.el7.x86_64.rpm
时遇到了依赖问题,这表明您的系统中缺少一些必要的 Perl 模块。为了解决这个问题,您需要先安装这些依赖项。以下是解决依赖问题的步骤:
1. 安装 Perl 依赖
首先,您需要安装 perl(JSON)
和 perl(Test::More)
这两个 Perl 模块。如果您使用的是基于 Red Hat 的系统,可以使用 yum
来安装这些模块:
sudo yum install perl-JSON
sudo yum install perl-Test-More
如果您使用的是 dnf
:
sudo dnf install perl-JSON
sudo dnf install perl-Test-More
2. 再次尝试安装 RPM 包
安装了上述依赖后,再次尝试安装 mysql-community-test
包:
sudo rpm -ivh mysql-community-test-8.4.3-1.el7.x86_64.rpm
3. 处理签名警告
关于签名警告,您可以使用以下命令导入 MySQL 的官方 GPG 密钥:
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql
这将解决因缺少密钥而产生的警告问题。
注意:必须要按照这个顺序进行解压缩,要不然会报错,出现相关的依赖问题。
2.4 启动Mysql
MySQL安装完成之后,会自动注册为系统的服务,服务名为mysqld。那么,我们就可以通过systemctl指令来查看mysql的状态、启动mysql、停止mysql。
sudo systemctl status mysqld 查看mysql服务状态
sudo systemctl start mysqld 启动mysql服务
sudo systemctl stop mysqld 停止mysql服务
使用这个命令时显示,认证失败,我这个使用的就是root用户。然后可以通过下面的方法进行解决。
# systemctl status mysqld
Failed to get properties: Access denied
# whoami
root
# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
# setenforce 0
# ausearch -m avc
<no matches>
# systemctl restart systemd
Failed to restart systemd.service: Unit not found.
# systemctl daemon-reload
出现 "Failed to get properties: Access denied" 的错误通常意味着在尝试查看服务状态时没有足够的权限。由于您已经在提示符中显示了 [root@zhuyue mysql8]#
,这表明您已经是以 root 用户身份登录的,理论上不应该出现权限问题。
但是,如果系统配置或策略限制了 root 用户执行某些操作,可能会遇到这个问题。以下是一些可能的解决方案:
1. 检查是否有 AppArmor 或 SELinux 策略限制
如果系统使用 AppArmor 或 SELinux,可能需要检查相关的安全策略是否阻止了 systemctl
命令。
- 对于 AppArmor,您可以检查
/etc/apparmor.d/
下的相关配置文件。 - 对于 SELinux,您可以使用
sestatus
查看当前的状态,或者查看/etc/selinux/
下的相关配置文件。
2. 确认 systemd
是否正确安装和配置
确保 systemd
已经正确安装并且没有被禁用。可以尝试重新启动 systemd
服务:
sudo systemctl daemon-reload
3. 检查是否有其他限制
某些系统管理工具,如 nscd
(Name Service Caching Daemon),可能会影响 systemctl
的行为。确保这些服务没有干扰到 systemctl
。
4. 使用 service
命令作为替代
如果 systemctl
命令不可用,您可以尝试使用较旧的 service
命令来查看 MySQL 服务的状态:
service mysqld status
或者,如果您使用的是 service
命令的 status
选项:
sudo service mysqld status
通过解决之后,再次使用命令发现就可以查看了。
systemctl status mysqld.service
然后通过以下命令来启动这个mysql数据库。
systemctl start mysqld
systemctl status mysqld.service
最后就成功启动了。到此为止这个全部的过程就完成了。希望这篇文章对你有所帮助!!!
记得关注和点赞哦!!