1.前期准备
1.1 查看glibc版本
ldd --version
# 下载mysql时,需要下载对应版本

1.2 查看OS版本信息
cat /etc/os-release

1.3查看OS架构信息
arch

1.4 卸载mariadb
yum remove mariadb* -y

1.5 安装相关路径规划
1.安装包上传至/apps/scripts/目录下
2.数据库安装至/apps/目录下

2.数据库安装
2.1 安装包下载及上传至服务器
数据库下载地址:https://dev.mysql.com/downloads/mysql/

2.2 解压及更名
# 解压
tar -xf mysql-8.0.46-linux-glibc2.17-x86_64.tar.xz -C /apps/
# 切换目录
cd ..
# 文件夹更名
mv mysql-8.0.46-linux-glibc2.17-x86_64 mysql

2.3 创建用户、组
# 创建组
groupadd mysql
# 创建用户并指定组
useradd -r -g mysql -s /bin/false mysql

2.4 创建配置文件
# 在/apps/mysql/目录下创建mysql配置文件
vim my.cnf

# 配置文件内容如下:
[client]
port=3306
default-character-set=utf8mb4
socket=/apps/mysql/data/mysql.sock
[mysql]
default-character-set=utf8mb4
socket=/apps/mysql/data/mysql.sock
[mysqld]
port=3306
character-set-server=utf8mb4
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake=true
basedir=/apps/mysql
datadir=/apps/mysql/data
pid-file=/apps/mysql/data/mysqld.pid
user=mysql
slow_query_log=OFF
lower_case_table_names=1
socket=/apps/mysql/data/mysql.sock
default-storage-engine=InnoDB
max_connections=600
max_connect_errors=1000
tmp_table_size=1024M
max_heap_table_size=1024M
join_buffer_size=1024M
thread_cache_size=32
key_buffer_size=256M
read_buffer_size=1M
read_rnd_buffer_size=128M
default_authentication_plugin=caching_sha2_password
sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"
max_allowed_packet=256M
innodb_log_file_size=256M
innodb_log_buffer_size=512M
innodb_buffer_pool_size=1638M
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800
innodb_flush_log_at_trx_commit=1
innodb_autoextend_increment=64
innodb_file_per_table=1
innodb_page_size=16K
group_concat_max_len=1024000
transaction-isolation=READ-COMMITTED
default-time-zone='+8:00'
max_connect_errors=1000
[mysqld_safe]
log-error=/apps/mysql/logs/error.log
[mysql.server]
basedir=/apps/mysql
2.5 数据库目录创建
# 创建数据目录
mkdir {data,logs}
pwd
ls

2.6 安装目录授权
# 授权
chown -R mysql:mysql /apps/mysql/

2.7 依赖安装
# 安装MySQL依赖软件
yum install -y iproute ncurses-libs perl perl-Data-Dumper libaio util-linux tar gzip numactl libatomic

2.8 初始化数据库
# 初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/apps/mysql --datadir=/apps/mysql/data --lower_case_table_names=1
# --lower_case_table_names=1在初始化时候,添加该参数是因为在my.cnf中存在该参数,不加会报错
# A temporary password is generated for root@localhost: s9:TUF03K)f_
s9:TUF03K)f_为自动生成的root密码,需要记录

3.系统服务注册
3.1 系统服务文件编写
# 注册MySQL启动服务
vim /etc/systemd/system/mysqld.service

# mysqld.service文件详细内容
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Start main service
ExecStart=/apps/mysql/support-files/mysql.server start
# Sets open_files_limit
LimitNOFILE = 65535
Restart=on-failure
RestartPreventExitStatus=1
# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
3.2 数据库配置文件修改
# 修改/apps/mysql/support-files/mysql.server文件中basedir和datadir,其他内容无需修改
vim /apps/mysql/support-files/mysql.server
修改内容如下:
basedir=/apps/mysql
datadir=/apps/mysql/data

3.3 测试系统服务注册是否正常
# 重载服务
systemctl daemon-reload
# 启动mysql服务
systemctl start mysqld
# 下图显示为服务正常、端口正常

4.连接测试
# 测试连接
bin/mysql -h127.0.0.1 -uroot -p
Enter password: # 输入2.8中生成 的密码

相关SQL
# 默认密码修改
mysql> alter user root@localhost identified by 'Abc123';
# 修改数据库允许任意地址连接
mysql> update user set Host="%" where user="root";
# 创建数据库
mysql> create database test default character set utf8mb4;
# 刷新
mysql> flush privileges;
5.环境变量设置及测试
5.1 环境变量设置
# 添加环境变量
vim /etc/profile
# 在最后添加以下两行
export MYSQL_HOME=/apps/mysql
export PATH=$PATH:$MYSQL_HOME/bin
# 重新加载配置
source /etc/profile

5.2 验证环境变量设置是否成功
# 服务器任意位置执行:
mysql -h127.0.0.1 -uroot -pAbc123

6.常见问题
运行SQL后报错:
1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

修改方法:
在my.cnf配置文件的[mysqld]板块中,新增参数:innodb_strict_mode=OFF
然后重启mysql服务

mysql重启后,此前报错的sql已经能够正常运行。
