在centos7中使用压缩包安装mysql 5.7

886 阅读4分钟

压缩包安装

官方教程 1(推荐):dev.mysql.com/doc/mysql-s…

官方教程 2:dev.mysql.com/doc/refman/…

通过 yum 安装 mysql 其实时最方便的方法,但是,也是通用性最差的。比如在没有网络的情况下就不能使用,因此也就有了压缩包安装的方式。

1、卸载 mariadb 数据库

mariadb 是 centos 自带的数据库,他和 mysql 会有一些冲突,会导致安装 mysql 失败。因此这一步是必须要做的

# 查看已经安装 mariadb 相关软件
[root@mycentos ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.65-1.el7.x86_64

# 卸载 mariadb
[root@mycentos ~]# rpm -e --nodeps mariadb-libs

2、yum 安装依赖的库

[root@mycentos ~]# yum install libaio

3、下载压缩包

下载地址:dev.mysql.com/downloads/m…

下载压缩包后通过传入 centos7 中,推荐 MobaXterm 软件

也可以使用 wget 命令直接在 centos 中下载

# 选择压缩包下载目录
cd /opt/software

# 下载
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.32-el7-x86_64.tar.gz

4、创建 mysql 用户和组

[root@mycentos ~]# groupadd mysql
[root@mycentos ~]# useradd -r -g mysql -s /bin/false mysql

由于 mysql 用户不是用于系统登录,所以使用 -r-s 选项来创建一个没有登录权限的用户

5、解压压缩包

这里我的压缩包在 /opt/software

[root@mycentos local]# cd /usr/local/
[root@mycentos local]# tar zxf /opt/softwore/mysql-5.7.32-el7-x86_64.tar.gz -C ./
[root@mycentos local]# mv mysql-5.7.32-el7-x86_64/ mysql

解压到 /usr/local/ 目录下,并对解压的 mysql 目录重命名

6、创建mysql-files目录(可选)

这一步并不是必须的,可以设置secure_file_priv的值指向该目录(用于限制数据导入导出操作的目录)

[root@mycentos local]# cd mysql
[root@mycentos mysql]# mkdir mysql-files
[root@mycentos mysql]# chown mysql:mysql mysql-files
[root@mycentos mysql]# chmod 750 mysql-files

7、创建 mysql 启动时配置文件

mysql 启动配置文件中存放的是 mysql 启动时的各种参数,如字符编码,端口等待

在启动 mysql 服务时如果不指定配置文件,mysql 会使用默认的启动参数来启动。

在实际使用中,我们会对 mysql 启动参数进行修改,所以我们都要创建这个配置文件

[root@mycentos mysql]# cd /etc
[root@mycentos etc]# touch my.cnf
[root@mycentos etc]# chown root:root my.cnf
[root@mycentos etc]# chmod 644 my.cnf
[root@mycentos etc]# vim my.cnf

文件内容:

[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF

8、初始化 mysql 数据目录

执行初始化后,mysql 会根据 my.cnf 中的参数在 mysql 根路径下创建一个 data 目录,这个目录存放 mysql 数据库中的数据

[root@mycentos etc]# cd /usr/local/mysql
[root@mycentos mysql]# bin/mysqld --defaults-file=/etc/my.cnf --initialize

如果这一步出错,则代表没有安装 libaio 这个库,回到第2步进行安装

初始化成功后,mysql 会在 err 日志中生成临时密码,登录是要用,err 日志的文件在 my.cnf 中指定

[root@mycentos mysql]# tail data/localhost.localdomain.err
...
A temporary password is generated for root@localhost: (foK3u?wguOt

9、启动 ssl 安全连接(可选)

[root@mycentos mysql]# bin/mysql_ssl_rsa_setup

10、启动 mysql 服务端

[root@mycentos mysql]# bin/mysqld_safe --user=mysql &

这启动的 & 是后台启动的意思,它不会独占一个终端

11、登陆 mysql 客户端

[root@mycentos mysql]# bin/mysql -u root -p
Enter password:

输入临时密码连接 mysql 客户端

12、修改密码

这一步必须做,否则 mysql 不允许你对数据库进行任何操作

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

13、退出客户端,关闭mysql服务

mysql> quit   # 退出 mysql client
Bye

[root@mycentos mysql]# bin/mysqladmin -u root -p shutdown
Enter password:

14、设置 mysql 开机自启

关于 systemd 的介绍:www.ruanyifeng.com/blog/2016/0…

通过 yum 安装的 mysql 默认通过 systemd 来管理开关机,而我们的压缩包安装也可以配置 systemd 来管理启动

1、新建 systemd service unit 配置文件

[root@mycentos mysql]# cd /usr/lib/systemd/system
[root@mycentos system]# touch mysqld.service
[root@mycentos system]# chmod 644 mysqld.service

2、在配置文件中添加配置信息

[Unit]
Description=MySQL Server
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

Type=forking

PIDFile=/usr/local/mysql/data/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS 

# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false

这里注意,在 ExecStart 后的字符串其实是一行,复制到 centos 后要确保没有换行符

在复制到配置文件之前,一定要确保文件中有关目录是正确的

3、为 systemd 的 tempfiles 特性添加配置文件

[root@mycentos system]# cd /usr/lib/tmpfiles.d
[root@mycentos tmpfiles.d]# touch mysql.conf
[root@mycentos tmpfiles.d]# chmod 644 mysql.conf

文件内容

d /usr/local/mysql/data 0750 mysql mysql  -

4、设置 mysql 服务开机自启

[root@mycentos tmpfiles.d]# systemctl enable mysqld.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.

5、手动启动 mysql 服务

测试 systemd 配置是否生效,使用 systemd 命令启动 mysql,之前第13步已经关闭 msyql 服务了

[root@mycentos tmpfiles.d]# systemctl start mysqld

检查 mysql 服务状态

[root@mycentos tmpfiles.d]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2020-10-24 20:44:39 CST; 1min 15s ago
......
10月 24 20:44:39 mycentos systemd[1]: Starting MySQL Server...
10月 24 20:44:39 mycentos systemd[1]: Started MySQL Server.

6、重启 centos,测试 mysql 能否自启

[root@mycentos ~]# systemctl status mysql

15、设置 bin 目录为系统变量

官方文档-设置环境变量:dev.mysql.com/doc/refman/…

如果想要在 centos 任意路径使用 mysql -uroot -p 命令,就需要把 msyql 的 bin 目录设置到环境变量中。

可以使用 export 命令来设置路径到环境变量,但是你退出登录后,下一次登录这个环境变量就会失效。

如果想永久生效,就要修改环境变量了,这个配置文件一般是 .bashrc

[root@mycentos ~]# find / | grep .bashrc
/etc/bashrc
/etc/skel/.bashrc
/root/.bashrc
/home/myboy/.bashrc

可以看到每个用户下都有 .bashrc 文件,对应每个用户登录时的启动文件,这里我们把 bin 放到 root 用户的启动文件中。

PATH=${PATH}:/usr/local/mysql/bin

执行 source 命令来是环境变量生效,或者也可以重新登录

[root@mycentos ~]# source /root/.bashrc
[root@mycentos ~]# mysql -uroot -p         # 启动测试
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.