本文参考链接:https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
1 环境介绍
系统:CentOS Linux release 7.9.2009 (Core)
MySQL:MySQL 8.0.27
2 安装方式
在CentOS 7 上安装MySQL有 3 种方式:①yum安装;②源码安装;③二进制文件安装。
本文所介绍的是第三种安装方式:使用二进制文件安装。
3 下载MySQL
官网下载地址:https://dev.mysql.com/downloads/mysql/**Select Operating System:**Red Hat Enterprise Linux / Oracle Linux
**Select OS Version:**Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)
选择mysql-8.0.27-el7-x86_64.tar
文件进行下载
4 安装MySQL
4.1 安装前准备
- 如果系统之前安装过MySQL,要确保之前安装的MySQL已经完全删除,并且确保旧版本的数据文件、配置文件(/etc/my.cfg、/etc/mysql目录)已经删除,否则再次安装有可能会失败。
```bash
查看CentOS系统是否已安装mysql
[root@localhost /]# rpm -qa|grep mysql
查看CentOS系统是否已安装mariadb, mysql会和mariadb的文件冲突,所以需要先卸载掉mariadb. mariadb 和 mysql 的历史渊源请自行谷歌
[root@localhost /]# rpm -qa|grep mariadb mariadb-libs-5.5.68-1.el7.x86_64
删除CentOS系统已安装的mariadb
[root@localhost /]# rpm -e —nodeps mariadb-libs-5.5.68-1.el7.x86_64 [root@localhost /]# rpm -qa|grep mariadb
删除历史MySQL的my.cfg配置文件
[root@localhost /]# rm /etc/my.cnf rm: cannot remove ‘/etc/my.cnf’: No such file or directory
删除历史MySQL的mysql文件夹
[root@localhost /]# rm -r /etc/mysql rm: cannot remove ‘/etc/mysql’: No such file or directory
检查mysql组和用户是否存在
[root@localhost /]# cat /etc/group | grep mysql [root@localhost /]# cat /etc/passwd | grep mysql
若存在,删除
userdel mysql #删除 mysql用户 groupdel mysql #删除 mysql用户组
2. MySQL 依赖`libaio`库,如果没有安装此库,则数据目录初始化和后续服务器启动步骤将失败,所以需要先安装`libaio`库
```bash
# search for info
[root@localhost /]# yum search libaio
# install library
[root@localhost /]# yum install libaio
4.2 正式安装
注意:安装命令需要**root用户**
或**具有sudo权限的用户**
执行
创建
mysql
用户组[root@localhost opt]# groupadd mysql
创建
mysql
用户并指定用户所属组为mysql
[root@localhost opt]# useradd -r -g mysql -s /bin/false mysql
上传下载的
mysql-8.0.27-el7-x86_64.tar
文件- 解压
mysql-8.0.27-el7-x86_64.tar
文件,为后续操作方便,创建名为mysql
的软链接 ```bash [root@localhost opt]# tar xvf mysql-8.0.27-el7-x86_64.tar mysql-test-8.0.27-el7-x86_64.tar.gz mysql-8.0.27-el7-x86_64.tar.gz mysql-router-8.0.27-el7-x86_64.tar.gz
[root@localhost opt]# tar zxvf mysql-8.0.27-el7-x86_64.tar.gz mysql-8.0.27-el7-x86_64/bin/ mysql-8.0.27-el7-x86_64/bin/myisam_ftdump mysql-8.0.27-el7-x86_64/bin/myisamchk mysql-8.0.27-el7-x86_64/bin/myisamlog mysql-8.0.27-el7-x86_64/bin/myisampack mysql-8.0.27-el7-x86_64/bin/mysql mysql-8.0.27-el7-x86_64/bin/mysql_config_editor mysql-8.0.27-el7-x86_64/bin/mysql_migrate_keyring mysql-8.0.27-el7-x86_64/bin/mysql_secure_installation mysql-8.0.27-el7-x86_64/bin/mysql_ssl_rsa_setup mysql-8.0.27-el7-x86_64/bin/mysql_tzinfo_to_sql mysql-8.0.27-el7-x86_64/bin/mysql_upgrade mysql-8.0.27-el7-x86_64/bin/mysqladmin mysql-8.0.27-el7-x86_64/bin/mysqlbinlog mysql-8.0.27-el7-x86_64/bin/mysqlcheck mysql-8.0.27-el7-x86_64/bin/mysqldump mysql-8.0.27-el7-x86_64/bin/mysqlimport mysql-8.0.27-el7-x86_64/bin/mysqlpump mysql-8.0.27-el7-x86_64/bin/mysqlshow mysql-8.0.27-el7-x86_64/bin/mysqlslap mysql-8.0.27-el7-x86_64/lib/ mysql-8.0.27-el7-x86_64/lib/plugin/ …
[root@localhost opt]# ln -s mysql-8.0.27-el7-x86_64 mysql [root@localhost opt]# ll total 3318816 lrwxrwxrwx. 1 root root 23 Dec 16 00:14 mysql -> mysql-8.0.27-el7-x86_64 drwxr-xr-x. 9 root root 129 Dec 16 00:13 mysql-8.0.27-el7-x86_64 -rw-r—r—. 1 root root 1229082112 Dec 15 23:46 mysql-8.0.27-el7-x86_64.tar -rw-r—r—. 1 7161 31415 827238016 Sep 28 22:33 mysql-8.0.27-el7-x86_64.tar.gz -rw-r—r—. 1 7161 31415 101781401 Sep 28 22:30 mysql-router-8.0.27-el7-x86_64.tar.gz -rw-r—r—. 1 7161 31415 300059201 Sep 28 22:31 mysql-test-8.0.27-el7-x86_64.tar.gz
5. 设置环境变量
```bash
[root@localhost opt]# vim /etc/profile.d/custom.sh
# The custom.sh is a customized file in the /etc/profile.d/ directory.
# mysql env
export PATH=$PATH:/opt/mysql/bin
[root@localhost opt]# source /etc/profile.d/custom.sh
在
mysql
目录下创建data
文件夹存放数据库数据[root@localhost opt]# cd /opt/mysql
[root@localhost mysql]# mkdir data
修改权限 ```bash
更改mysql文件夹及下级所有文件的所属的组为mysql组,用户为mysql
[root@localhost mysql]# cd /opt/ [root@localhost opt]# chown -R mysql mysql/ [root@localhost opt]# chgrp -R mysql mysql/
修改mysql-files文件夹权限
[root@localhost opt]# cd mysql [root@localhost mysql]# chmod 750 data
8. 初始化`mysql`(注意记住初始化后的root用户密码)
```bash
[root@localhost mysql]# pwd
/opt/mysql
[root@localhost mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
2021-12-15T17:25:42.046127Z 0 [System] [MY-013169] [Server] /opt/mysql-8.0.27-el7-x86_64/bin/mysqld (mysqld 8.0.27) initializing of server in progress as process 1757
2021-12-15T17:25:42.061106Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-12-15T17:25:42.696621Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-12-15T17:25:44.064512Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2021-12-15T17:25:44.064541Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2021-12-15T17:25:44.095699Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: cjMz8itj%Sk?
【可选】启用SSL加密
[root@localhost mysql]# pwd
/opt/mysql
[root@localhost mysql]# bin/mysql_ssl_rsa_setup --datadir=/opt/mysql/data
启动
mysql
```bash配置启动文件
[root@localhost support-files]# vim mysql.server ···
basedir=/opt/mysql datadir=/opt/mysql/data ···
复制启动文件到/etc下
[root@localhost support-files]# cp mysql.server /etc/init.d/mysql.server
[root@localhost mysql]# bin/mysqld_safe —user=mysql &
```