Bootstrap

从0开始学习Linux——MySQL安装多种方式详解

 期目录:

从0开始学习Linux——简介&安装

从0开始学习Linux——搭建属于自己的Linux虚拟机

从0开始学习Linux——文本编辑器

从0开始学习Linux——Yum工具

从0开始学习Linux——远程连接工具

从0开始学习Linux——文件目录

从0开始学习Linux——网络配置

从0开始学习Linux——防火墙配置

从0开始学习Linux——系统服务管理

从0开始学习Linxu——系统常用命令

从0开始学习Linux——进程管理

从0开始学习Linux——用户管理

从0开始学习Linux——文件管理

从0开始学习Linux——Shell编程详解【01】

从0开始学习Linux——Shell编程详解【02】

从0开始学习Linux——Shell编程详解【03】

从0开始学习Linux——Shell编程详解【04】

从0开始学习Linux——定时任务

上期教程我们学习了环境变量,这期教程我们将学习如何在Linux上安装MySQL。

 一、安装方式一

1.1 安装mysql的yum仓库

1.1.1 下载

我们可以去官网(MySQL :: Download MySQL Yum Repository)选择自己想要的版本rpm包。

这里以mysql8为例。

那么该怎么去下载呢?

  • 方式1:直接去官网下载好然后将下载好的rpm包上传到Linux虚拟机里面。
  • 方式2:直接使用wget进行安装。

这里我们使用wget进行安装。

补充:

wget是一个常用的命令行工具,用于从网络上下载文件。它支持HTTP、HTTPS和FTP协议,可以通过命令行直接进行文件的下载,甚至可以在没有用户交互的情况下进行批量下载或自动化下载任务。

如果我们想要使用wget,需要先下载wget。

yum install wget

 下面我们就可以使用wget了。

wget [选项] url

wget命令常见选项如下所示:

  • -O:将下载的文件保存为指定的文件名,而不是默认的文件名。
  • -c:从上次中断的地方继续下载文件,这对于大文件或断点续传非常有用。假设下载过程中发生了中断,可以重新执行wget命令继续下载,而不是重新开始。
  • -q:静默运行,不输出任何下载信息。适用于不需要显示过程的脚本或自动化任务。
  • -r:递归下载网站内容。使用此选项时,wget将下载整个网站或指定路径下的所有文件和子目录。
  • -np:用于与-r一起使用,防止下载父目录中的内容。
  • -A:限制下载特定类型的文件。
  • -R:与-A 相反,-R选项可以排除不需要下载的文件类型。
  • --limite-rate=RATE:限制下载速率。对于带宽有限制的网络,可以使用此选项限制wget的下载速度。
  • -b:在后台下载文件。当需要启动一个长时间运行的下载任务时,可以使用这个选项,它将 wget进程放到后台运行,并且不会阻塞终端。下载进度和日志会写入到一个名为wget-log的文件中。
  • -nd:不创建目录结构,下载的文件将直接保存到当前工作目录中。
  • -nH:下载文件时,不会在本地创建主机名目录,所有文件将直接保存到当前目录中。
  • --user-agent=STRING:使用指定的用户代理字符串。通常,用于模拟不同浏览器或操作系统的下载请求。
  • --no-check-certificate:跳过SSL证书验证。对于一些不受信任的HTTPS服务器或自签名证书的情况,使用此选项来避免验证证书。
  • -i:可以使用一个包含多个URLs的文件进行批量下载。
  • -l:若只想下载网站的部分内容而不是整个网站,可以使用-l选项来设置递归下载的深度。

下面我们就开始使用wget安装mysql8的rpm包。

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

这里我是直接将mysql80-community-release-el7-3.noarch.rpm安装再root家目录里面的,我们自己在安装的时候可以选择合适的位置去安装。

1.1.2 安装

rpm -ivh mysql80-community-release-el7-3.noarch.rpm

注意:这里的rpm包名要和自己前面通过wget下载的保持一致。

yum repolist enabled | grep "mysql.*-community.*"

安装好以后我们可以来验证一下。

 1.2 启用mysql仓库

由于我们下载的是mysql8的仓库,因此默认情况下,yum仓库会启用 MySQL 8.0。

当然我们也可以手动去关闭和开启仓库。

yum-config-manager --enable 仓库名称
yum-config-manager --disable 仓库名称

上述命令中的enable用于开启仓库,而disable用于关闭仓库。

例如:

yum-config-manager --enable mysql80-community

注意:yum-config-manager是由yum-utils工具包提供的命令,因此我们需要通过命令“yum install yum-utils”去下载。

1.3 安装mysql

安装好并启用了mysql仓库以后我们就可以去安装mysql了。

yum install mysql-community-server

注意:这里在安装mysql的时候可能会报错,当然它没有报错的话就不用去理会它。

例如这里我在安装的时候就遇到了GPG密钥错误。

若遇到了密钥的错误,我们就需要考虑mysql仓库的密钥是否存在。

 通过检查密钥发现密钥是存在的,那么只能说明一个问题这里GPG密钥和安装的mysql8不匹配。

注意:如果报错不存在密钥就去import导入即可。

这里由于我们下载的mysql版本为8.0因此improt最新版的密钥后还是会报错,说密钥和安装包不匹配,当然我们若是安装的是最新版mysql,那么可能就不会存在这个错误

那么该怎么去解决呢?

这里的解决方案有两种。

方式一:自己创建GPG密钥并导入(推荐)

首先我们打开mysql官网去复制mysql8版本对应的GPG密钥。

官网地址MySQL :: MySQL 8.0 Reference Manual :: 2.1.4.2 Signature Checking Using GnuPG

注意:在进入官网复制密钥的时候一定要根据自己mysql的版本来,比如我这里是mysql8.0。

进入官网以后点击旁边的复制按钮即可。

接下来我们需要在/etc/pki/rpm-gpg目录下新建一个mysql_pubkey.asc文件,并将刚才复制的密钥粘贴进去。

vi /etc/pki/rpm-gpg/mysql_pubkey.asc

接下来我们我们就可以打开mysql的仓库文件并去修改里面的密钥映射。

打开以后九江gpg替换为我们刚才所创建的mysql_pubkey.asc文件。

接下来我们清除一下缓存。

yum clean all

 下面我们再次去尝试安装mysql。

yum install mysql-community-server

再次执行上述命令的时候就发现mysql服务和mysql客户端都已经安装好了。

 方式二:绕过GPG验证(不推荐)

如果能够确信包是安全的,但依然想跳过 GPG 密钥验证,可以临时禁用 GPG 检查。但这种方法不推荐使用,因为会降低系统的安全性。

在使用rpm安装时添加--nosignature。

rpm -ivh --nosignature mysql-community-client-plugins-8.0.40-1.el7.x86_64.rpm

当然我们也可以直接去mysql的仓库文件里面将gpgcheck的值改为0也行。

1.4 查看mysql版本

安装好mysql以后我们可以检查一下mysql安装的版本。

mysql --version

1.5 开启mysql服务

由于我们使用的是yum安装的mysql,因此我们可以直接使用systemctl命令去管理mysql服务。

启动mysql服务

systemctl start mysqld

 设置mysql开机自启

systemctl enable mysqld

检查mysql服务状态

systemctl status mysqld

 1.6 获取mysql临时密码

MySQL 安装完成后,会生成一个临时的 root 密码,root账号是超级管理员,它的权限最高。

对于这个临时密码,我可以先进行复制后面我们要用到它。

1.7 mysql安全配置

我们可以通过运行mysql_secure_installation命令来设置mysql的安全性。

mysql_secure_installation

执行该命令后会提示以下几个问题:

  • 输入当前 root 密码(临时密码)。
  • 是否配置 VALIDATE PASSWORD 插件来加强密码安全(建议选择 "Y")。
  • 设置 root 用户密码(建议更换为强密码)。
  • 是否删除匿名用户(建议选择 "Y")。
  • 是否禁止 root 远程登录(建议选择 "Y")。
  • 是否删除测试数据库(建议选择 "Y")。
  • 是否重新加载权限表(选择 "Y")。

在这里我们可以重新设置root账号的密码以及禁止root账号远程登录。

在后续我们使用root账号登录mysql服务器时我们就可以使用现在更改的新密码。

1.8 登录mysql服务

mysql -u root -p

输入新密码后,应该可以成功登录 MySQL。

1.9 创建可远程登录用户

对于root用户我们一般禁止远程登录并且对root账户进行严格的控制,因为root用户是超级管理员权限最高。

这里我们创建一个admin账户并且可以进行远程登录。

CREATE USER 'admin'@'%' IDENTIFIED BY 'S@5vTk!8dLr';

接下来我们可以给予admin用户权限。

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;

 设置好权限以后我们还需要进行刷新。

注意:这里为了方便就给amdin开放了所有权限,实际中并不会这样。

FLUSH PRIVILEGES;

 1.10 设置防火墙

mysql服务创建好以后就可以在Linux系统中的防火墙设置端口放行以及相关的拦截。

这里我们可以在防火墙中设置对3306(mysql默认端口号)端口号进行放行。

firewall-cmd --zone=public --add-port=3306/tcp --permanent

 放行以后需要重载,才能让放行规则生效。

firewall-cmd --reload

 下面我们就来检查一下防火墙是否设置成功。

firewall-cmd --list-all

 上图中可以看出防火墙对3306是设置成功了的。

虽然我们已经在防火墙里面对3306进行放行,但是admin用户可能还是不能远程访问。

默认情况下,MySQL 可能会配置为只允许本地连接。因此我们需要修改 MySQL 配置文件,以允许远程连接。

对于mysql的配置文件一般会安装在/etc/目录下,如果没有安装在里面,我们可以先去查询。

my.cnf

上图中我们可以看出配置文件中没有bind-address选项,因此是允许远程访问的,但我们可以将该选项添加上,也方便后期修改。

 修改完mysql配置文件以后我们需要重启mysql服务。

systemctl restart mysqld

1.11 远程访问mysql

下面我们就可以在我们的电脑上通过可视化工具去远程访问linux虚拟机里面的mysql服务。

这里以Navict为例。

打开Nvicat以后点击左上角的连接并选择mysql。

 接下来需要填写连接信息。

填写完信息后先点击测试连接若成功再点击确定。 

现在我们就可以通过navicat去控制Linux系统中的mysql服务了。

1.12 设置mysql用户组

我们先来创建一个mysql用户组用于权限管理。

groupadd mysql

mysql在安装的时候会默认帮忙创建一个mysql用户组。

接下来可以创建一个与 MySQL 相关的用户,并将其添加到 mysql 用户组。

useradd -r -g mysql -s /bin/false mysql

上述命令的选项含义如下所示:

  • -r:创建一个系统用户(无登录权限)。
  • -g mysql:将用户添加到mysql用户组。
  • -s /bin/false:禁止该用户登录。

下面开始设置MySQL数据目录的权限。

MySQL 的数据目录通常是/var/lib/mysql,您需要将该目录的所有权设置为mysql用户组,以便 MySQL 能够访问和管理数据。

chown -R mysql:mysql /var/lib/mysql

 这将递归地将 MySQL 数据目录的所有文件的拥有者和用户组都更改为mysql。

下面我们继续设置文件系统权限。

现在还需要确保 MySQL 的相关目录和文件有合适的读写权限。

chown -R mysql:mysql /etc/my.cnf
chown -R mysql:mysql /etc/mysql/

 二、安装方式二

方式一我们是通过yum进行安装的,下面我们通过下载mysql官网相关压缩安装包进行安装。

2.1 安装相关依赖包

MySQL 8 需要一些依赖包,首先确保系统已经安装了相关的依赖。

yum install -y wget gcc-c++ cmake ncurses-devel libaio-devel

2.2 下载mysql官方压缩包

进入mysql官网:MySQL :: Download MySQL Community Server

进入官网后选择适合我们自己系统架构的Linux-Generic版本。然后复制下载链接。假设我们使用的是 x86_64 版本的 Linux,可以使用wget来下载压缩包。

在此之前我们可以现在/opt目录下创建一个software文件见并跳转到该目录下。

 接下来我们就可以下载压缩包了。

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar

 2.3 解压缩

mysql压缩包下载好以后我们就可以使用tar命令去解压缩。

tar -xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar

 2.4 安装mysql

MySQL 官方的 RPM 包里包含了安装 MySQL 所需的所有组件。我们可以使用rpm来安装这些包。

rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm

注意:安装的时候一定要注意安装顺序,因为这些包会存在着依赖关系。

2.5 查看mysql版本

安装好mysql后可以检查下是否安装成功以及mysql版本。

mysql --version

 到此为止mysql就安装好了,后面的操作和方式一是一样的,这里就不多去赘述了。

三、卸载mysql

前面我们已经学习了安装mysql的两种方式,下面我们了解一下mysql的卸载。

首先我们需要先停止mysql服务。

systemctl stop mysqld

接着使用可以使用yum卸载安装的 MySQL 包。

yum remove mysql mysql-server mysql-libs mysql-common

 为了确保删除干净我们可以搜索一下。

rpm -qa | grep mysql

该命令会列出已安装的mysql的相关安装包,有的话就卸载,没有就不管。

接下来我们需要删除mysql的各种文件。

rm -f /etc/my.cnf
rm -rf /etc/my.cnf.d/
rm -rf /var/lib/mysql/
rm -rf /var/log/mysql/
rm -f /var/log/mysqld.log

下面我们还需要去删除mysql用户组和相关用户。

userdel mysql
groupdel mysql

有时,yum remove命令可能会留下不再需要的依赖包,可以使用yum autoremove来清理这些依赖包。

 最后,可以使用以下命令检查 MySQL 是否已被完全卸载。

which mysql

有的话就删除没有的话可以不用去理会。

四、安装方式三

下面我们来尝试另外一种安装方式。

4.1 下载压缩包

首先我们进入mysql官网根据系统架构选择对应的版本:MySQL :: Download MySQL Community Server (Archived Versions)

例如我这里选择8.0.3版本。

对于该压缩包的下载,我们可以在官网中下载下来然后再传输到Linux系统中,也可以直接使用wget下载。

这里我们选择将其下载到/opt/software目录下。

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-el7-x86_64.tar

4.2 解压缩

tar -xvf mysql-8.0.30-el7-x86_64.tar
tar -zxvf mysql-8.0.30-el7-x86_64.tar.gz

4.3 文件夹迁移&data目录

下面我们就将解压好的mysql-8.0.30-el7-x86_64文件夹移动到/usr/local下并改名为mysql8。 

 mv /opt/software/mysql-8.0.30-el7-x86_64 /usr/local/mysql8

 接着在/usr/local/mysql8目录下创建一个data目录用于存储mysql数据。

 mkdir /usr/local/mysql8/data

 4.4 创建mysql用户组

groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /usr/local/mysql8/
chmod -R 755 /usr/local/mysql8/

4.5 初始化mysql

进入到mysql所在目录并执行相关命令。

cd /usr/local/mysql8

./bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql8/data --basedir=/usr/local/mysql8

mysql初始化以后会创建一个root账号并分配一个随机密码,我们需要复制下来。

 4.6 创建mysq配置文件

vi /etc/my.cnf

创建好文件以后可以添加内容。

[client]
port = 3306
socket = /usr/local/mysql8/data/mysql.sock
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'

port = 3306
socket = /usr/local/mysql8/data/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
datadir = /usr/local/mysql8/data

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

接着给my.cnf设置权限。

chmod 777 /etc/my.cnf

4.7 制作&启动mysql服务

这里我先来创建一个mysqld服务单元。

vi /etc/systemd/system/mysqld.service

接着往里面填充内容。

[Unit]
Description=MySQL Community Server
After=network.target

[Service]
User=mysql
Group=mysql

ExecStart=/usr/local/mysql8/bin/mysqld --defaults-file=/etc/my.cnf
ExecStop=/usr/local/mysql8/bin/mysqladmin shutdown

TimeoutSec=300

[Install]
WantedBy=multi-user.target

接着我们需要重新加载系统服务以使其生效。

systemctl daemon-reload

接下来我们就可以通过systemctl去控制mysql服务了。

接下来我们只需要进入到/usr/local/mysql8/bin目录下登录mysql。

 注意:密码要使用前面生成的随机初始化密码。

对于mysql服务除了可以这样启动以外,我们还可以通过去目录下通过mysql.serve脚本去管理mysql服务。

/usr/local/mysql8/support-files/mysql.server 选项

上述命令常见选项如下所示:

  • start:开启mysql服务
  • reload:重启mysql服务
  • stop:停止mysql服务

例如:/usr/local/mysql8/support-files/mysql.server start命令可以启动mysql服务。

本期内容就先到这里,更多内容将在后续教程中进行展示。

;