1、从官网下载MySQL离线包
MySQL8.0.27下载url:
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
2、上传离线包到centos8的opt目录
3、创建apps目录
mkdir /usr/local/apps
4、解压压缩包到apps目录并重命名MySQL文件夹
解压压缩包到指定目录下
tar -xvf /opt/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz -C /usr/local/apps
重命名文件夹
mv /usr/local/apps/mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/apps/mysql8.0.27
5、配置环境变量
将字符串以追加的方式写入文件
echo -e " export MYSQL_HOME=/usr/local/apps/mysql8.0.27\n export PATH=\${PATH}:\${MYSQL_HOME}/bin\n" >> /etc/profile
让修改后的配置立即生效
source /etc/profile
6、创建MySQL配置文件
从gitee下载配置文件
curl -o /usr/local/apps/mysql8.0.27/my.cnf https://gitee.com/DragonYmqx/source/raw/master/properties/my.cnf
my.cnf的内容(也可以手动创建my.cnf文件,并复制以下内容)
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/apps/mysql8.0.27
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/apps/mysql8.0.27/data
socket=/usr/local/apps/mysql8.0.27/tmp/mysql.sock
# 指定存放进程ID的文件
pid_file=/usr/local/apps/mysql8.0.27/tmp/mysql.pid
# 指定错误日志路径
log_error=/usr/local/apps/mysql8.0.27/logs/error.log
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8MB4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
socket=/usr/local/apps/mysql8.0.27/tmp/mysql.sock
创建临时文件夹及日志文件夹:
mkdir /usr/local/apps/mysql8.0.27/tmp /usr/local/apps/mysql8.0.27/logs
7、创建系统组和角色mysql
创建组mysql
groupadd mysql
创建角色mysql并加入mysql组
useradd -g mysql mysql
8、修改MySQL8.0.26文件夹的所有者和权限
设置mysql组的mysql角色为mysql8.0.26文件夹的所有者
chown mysql:mysql -R /usr/local/apps/mysql8.0.27
修改mysql8.0.26文件夹的权限
chmod -R 755 /usr/local/apps/mysql8.0.27
9、检查是否存在libtinfo.so.5,不存在则创建链接
find /usr/lib64 -name "libtinfo.so.5"
如果没有找到,说明不存在,则需要创建链接
1.查找lib64下的所有的版本,并重定向到临时文件
find /usr/lib64 -name "libtinfo.so.*" > so.tmp
2.根据临时文件的第一行信息(其中一个版本),创建软链接
ln -s `head -1 so.tmp` /usr/lib64/libtinfo.so.5
10、初始化MySQL(需要记录生成的随机密码)
以系统角色mysql初始化MySQL8.0.26并将输出信息打印在控制台
/usr/local/apps/mysql8.0.27/bin/mysqld --console --initialize --user=mysql
注意:执行该初始化操作有可能日志信息不会输出到控制台,需要到生成的logs目录下的error.log查看日志信息
cat /usr/local/apps/mysql8.0.27/logs/error.log
供参考的日志信息(大部分已省略,这里主要展示随机密码的部分):
2021-07-28T04:11:30.657089Z 0 [System] [MY-013169] [Server] /usr/local/apps/mysql8.0.26/bin/mysqld (mysqld 8.0.26) initializing of server in progress as process 61957(开始部分)
......(中间部分 此处省略输出信息)
......
2021-07-28T04:11:33.969715Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: RwHUa/xz1S22 (此处是生成的随机密码,格式为root@localhost: 密码)
......
......(中间部分 此处省略输出信息)
2021-07-28T04:12:03.404440Z 0 [System] [MY-010910] [Server] /usr/local/apps/mysql8.0.26/bin/mysqld: Shutdown complete (mysqld 8.0.26) MySQL Community Server - GPL.(结尾部分)
11、守护模式启动mysql(以后台方式运行)
/usr/local/apps/mysql8.0.26/bin/mysqld_safe & (执行该指令后需要回车进入下一步操作)
12、登录mysql并修改登录密码
登录mysql
mysql -uroot -p'随机密码' (注意:这里指的是生成的随机密码,而不是随机密码这四个字)
修改登陆密码
alter user 'root'@'localhost' identified by 'root';
刷新
flush privileges;
13、设置允许root用户远程登录
use mysql;
update user set host='%' where user='root';
flush privileges;