侧边栏壁纸
博主头像
与晚风述往事博主等级

万般皆下品,唯有读书高。

  • 累计撰写 149 篇文章
  • 累计创建 29 个标签
  • 累计收到 19 条评论

目 录CONTENT

文章目录

CentOS 7 安装MySQL 5.7

与晚风述往事
2021-08-29 / 0 评论 / 0 点赞 / 419 阅读 / 2,848 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-09-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

在MySQL官方文档中了解到,CentOS操作系统下的MySQL安装可以有三种方式,分别是:

  • YUM存储库安装
  • 通用二进制包安装
  • 源码安装

生产环境中,不建议使用源码安装,所以我这里只提供其他两种安装方式。另外说明一下,不建议使用的原因是源码安装过于复杂,并且在构建过程中选项会对性能和稳定性有很大影响。万一设置的不合理,导致数据库性能或稳定性出现了问题,岂不是悲剧了。对于不是很懂源码安装或者不需要对服务器进行定制的配置的话,使用二进制包安装即可(YUM存储库也是二进制包,只不过包管理方式不同罢了)。MySQL官方对于每个二进制包的发布都进行了大量的测试,以找到使用最佳选项进行构建。

环境说明

本次安装的所有示例均运行在如下环境:
CentOS的版本:CentOS 7.9 2009
MySQL的版本:MySQL社区版5.7.35

安装

YUM存储库安装

使用YUM库安装通常使用在服务器能够访问到外网,直接下载YUM包。

1、下载MySQL YUM库

从官网下载对应服务器版本的YUM库,CentOS7版本直接下载Red Hat Enterprise Linus 7/Oracle Linux 7即可。
官网地址:https://dev.mysql.com/downloads/
image.png
image.png

我这里是获取到链接地址后,直接下载到CentOS的/usr/local/src目录下。

[root@localhost src]# wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm

image.png

2、安装发行包

下载后,我们直接使用RPM安装它。安装成功后,会在/etc/yum.repo.d目录下发现两个新的源文件,分别是mysql-community.repo和mysql-community-source.repo。

[root@localhost src]# rpm -ivh mysql80-community-release-el7-5.noarch.rpm

image.png

3、选择发行版

安装完成后,我们需要配置使用的MySQL版本。默认情况下它会选择最新的稳定版,但由于我这里是使用MySQL5.7版本,所以还需要禁用最新的版本,并启用5.7的版本。

列出存储库中的所有版本信息

[root@localhost src]# yum repolist all | grep mysql

image.png
从图中看到,它默认已经帮我们启用了mysql8.0的版本。

禁用mysql8.0版本

[root@localhost src]# yum-config-manager --disable mysql80-community

启用mysql5.7版本

[root@localhost src]# yum-config-manager --enable mysql57-community

再次列出存储库中的所有版本信息

[root@localhost src]# yum repolist all | grep mysql

image.png

4、安装MySQL服务

配置好发行版本后,我们就可以直接使用yum下载并安装相应的MySQL版本了。

[root@localhost src]# yum install -y mysql-community-server

image.png

5、配置MySQL服务

在安装好MySQL后,我们不要立即启动,先将默认的存储地址修改下,毕竟默认是存储在/var目录下。由于我这里是虚拟机,没有多余的硬盘,就直接将其指定到/usr/local/mysql目录下。

[root@localhost src]# vim /etc/my.cnf

新增或编辑以下内容,参数根据自己的实际情况去选择,如果不清楚也可以按我的设置去配置。

[mysqld]
datadir=/usr/local/mysql
socket=/usr/local/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/usr/local/mysql/mysqld.log
pid-file=/usr/local/mysql/mysqld.pid

explicit_defaults_for_timestamp=true
tls_version=TLSv1.2

user=mysql

[client]
socket=/usr/local/mysql/mysql.sock

image.png
参数说明:

  • [mysqld] 下面的参数都是mysqld配置
    • datadir 存储数据的目录
    • socket socket文件目录
    • symbolic-links 是否支持符号链接
    • log-error mysql日志文件目录
    • pid-file 记录mysql进程号的文件
    • explicit_defaults_for_timestamp 启用后,当表中的其他列更新时,即使没有更新timestamp类型的字段,它也会记录本次更新的时间。
    • tls_version tls版本
    • user 指定启用数据库时使用的用户
  • [client] 下面的参数都是client配置
    • socket socket文件目录

6、关闭Selinux

配置好MySQL的参数后,我们还需要关闭Selinux,否则直接启动数据库会报错。

[root@localhost src]# setenforce 0

7、开启firewalld的端口

MySQL的默认端口是3306,如果没有指定mysql的端口号,则开放默认端口。

检查firewalld状态

[root@localhost src]# systemctl status firewalld.service

开放3306端口

[root@localhost src]# firewall-cmd --permanent --zone=public --add-port=3306/tcp

重启firewalld

[root@localhost src]# systemctl restart firewalld

8、启动MySQL服务

所有参数配置好后,启动MySQL服务。MySQL在首次启动时,如果检测到数据目录为空,则会进行以下操作:

  • 自动初始化
  • 生成ssl证书和密钥文件
  • validate_password插件安装并启用
  • 创建root用户并随机生成密码记录到日志文件中。
[root@localhost src]# systemctl start mysqld

9、查看默认生成的root密码

MySQL服务正常启动后,查看临时生成的root密码,密码存储在刚刚配置的log-error文件中。

[root@localhost src]# grep 'temporary password' /usr/local/mysql/mysqld.log

10、使用临时密码登录数据库

[root@localhost src]# mysql -uroot -p

image.png

11、修改root密码并刷新权限

使用yum安装的会自动有配置密码校验,所以尽量不要使用过于简单的密码。

打开MySQL Shell命令窗口

[root@localhost src]# mysql/bin/mysql -uroot -p

修改MySQL数据库的root用户的访问权限及密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

参数介绍:

  • localhost 表示只有本地能访问数据库,本地也就是安装MySQL数据库的服务器。如果想让其他客户端访问的话,将@后面的引号部分修改为%,则表示所有客户端都可以访问。除此之外,你还可以指定ip地址段访问,例如只想让192.168.0段的ip访问的话,则可以设置成192.168.0.%。

修改后,刷新权限表

mysql> flush privileges;

二进制包安装

建议在内网环境使用此安装方式。

1、移除mariadb

CentOS 7已经默认安装mariadb了,我们将它移除。

检查是否安装mariadb

[root@localhost src]# rpm -qa|grep mariadb*

移除mariadb

[root@localhost src]# yum -y remove mariadb-libs*

MySQL_5_4

2、下载二进制包

在下载MySQL之前,我们需要知道MySQL数据库的版本划分。从官网了解到,MySQL分为开发版本和可用性版本(GA)。开发版本是有最新的功能,但稳定性不如GA版本。因此,我们必须在服务器中使用GA版本。

官网下载地址:https://dev.mysql.com/downloads/mysql/
MySQL_5_1
MySQL_5_2

进入到临时目录

[root@localhost ~]# cd /usr/local/src

使用wget下载安装包

[root@localhost src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.35-el7-x86_64.tar

MySQL_5_3

3、解压tar并重命名

解压tar

[root@localhost src]# tar -xvf mysql-5.7.35-el7-x86_64.tar

解压tar.gz

[root@localhost src]# tar -xvf mysql-5.7.35-el7-x86_64.tar.gz

重命名解压文件

[root@localhost src]# mv mysql-5.7.35-el7-x86_64 mysql

4、新增用户和组,配置环境变量

根据官网中,这里新增的用户是不具有登陆会话权限的,也就是表示着你只能用其他用户来管理mysql。

新增mysql组

[root@localhost src]# groupadd mysql

新增mysql用户并加入组
使用-s /bin/false参数指定mysql不允许登录ssh会话

[root@localhost src]# useradd -r -g mysql -s /bin/false mysql

配置环境变量

[root@localhost src]# export PATH=$PATH:/usr/local/src/mysql/bin

5、创建数据存储目录,并授权

这里通常是设置成磁盘空间较大的位置。

创建数据存储目录

[root@localhost src]# mkdir -p /usr/local/mysql

授权目录及子目录为mysql所有

[root@localhost src]# chown -R mysql:mysql /usr/local/mysql

6、配置参数文件

编辑配置文件

[root@localhost src]# vim /etc/my.cnf

新增或编辑以下内容,参数根据自己的实际情况去选择,如果不清楚也可以按我的设置去配置。

[mysqld]
basedir=/usr/local/src/mysql
datadir=/usr/local/mysql
socket=/usr/local/mysql/mysql.sock
explicit_defaults_for_timestamp=true
tls_version=TLSv1.2

[mysqld_safe]
log-error=/usr/local/mysql/mysql.log
pid-file=/usr/local/mysql/mysql.pid
user=mysql

[client]
socket=/usr/local/mysql/mysql.sock

MySQL_5_5
参数说明:

  • [mysqld] 下面的参数都是mysqld配置
    • basedir 数据库文件目录,可以理解为tar包解压后的目录
    • datadir 存储数据的目录
    • socket socket文件目录
    • explicit_defaults_for_timestamp 启用后,当表中的其他列更新时,即使没有更新timestamp类型的字段,它也会记录本次更新的时间。
    • tls_version tls版本
  • [mysqld_safe] 下面的参数都是mysqld_safe配置
    • log-error mysql日志文件目录
    • pid-file mysql.pid文件目录
    • user 用户,表示什么用户启动的mysql
  • [client] 下面的参数都是client配置
    • socket socket文件目录

7、初始化数据目录

这里可以理解为开始安装,也就是构建mysql数据库了。它会自动生成一个root密码,需要我们连接进去后改密码。

初始化数据库

[root@localhost src]# mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql

MySQL_5_6

8、开放firewalld端口

检查firewalld状态

[root@localhost src]# systemctl status firewalld.service

开放3306端口

MySQL的默认端口是3306,如果没有指定mysql的端口号,则开放默认端口。

[root@localhost src]# firewall-cmd --permanent --zone=public --add-port=3306/tcp

重启firewalld

[root@localhost src]# systemctl restart firewalld

9、启动数据库

启动数据库我们可以使用mysqld,也可以使用mysqld_safe,官方建议我们使用mysqld_safe启动。加&表示以后台进程启动,不加的话是作为前台进程启动,在shell断开或手动关闭后,数据库也会关闭。

启动数据库

[root@localhost src]# mysql/bin/mysqld_safe &

10、初始化root密码

启动数据库后,我们开始初始化密码。初始化密码,简单来说就是将root用户的密码给修改掉,不要使用默认的。

打开MySQL Shell命令窗口

[root@localhost src]# mysql/bin/mysql -uroot -p

修改MySQL数据库的root用户的访问权限及密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

MySQL_5_7
参数介绍:

  • localhost 表示只有本地能访问数据库,本地也就是安装MySQL数据库的服务器。如果想让其他客户端访问的话,将@后面的引号部分修改为%,则表示所有客户端都可以访问。除此之外,你还可以指定ip地址段访问,例如只想让192.168.0段的ip访问的话,则可以设置成192.168.0.%。

修改后,刷新权限表

mysql> flush privileges;

结束

至此,mysql数据库的两种安装方式都已安装完成。

0

评论区