MySQL 8.4.8 LTS 安装

MySQL 8.4.8 LTS 安装

下载地址:

1
https://dev.mysql.com/downloads/mysql

将安装包上传到 /opt 目录下

解压并删除压缩包:

1
2
# 解压tar -xf mysql-8.4.8-linux-glibc2.28-x86_64.tar.xz
# 删除压缩包rm -rf mysql-8.4.8-linux-glibc2.28-x86_64.tar.xz

修改文件夹名称:

1
2
# 修改文件夹名称mv /opt/mysql-8.4.8-linux-glibc2.28-x86_64 /opt/mysql8.4.8
# 创建工作目录文件夹cd /opt/mysql8.4.8mkdir data

创建用户并授予权限:

1
2
# 创建用户useradd mysql
# 授予权限chown mysql:mysql -R /opt/mysql8.4.8chmod -R 775 /opt/mysql8.4.8

创建配置文件:

1
vim /etc/my.cnf

写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

[mysqld]
# 禁用dns解析
skip-name-resolve
# 身份验证插件
authentication_policy=caching_sha2_password
# 绑定地址
bind-address=0.0.0.0
mysqlx-bind-address=127.0.0.1
# 设置 3306 端口
port=3306
# 设置mysql的安装目录
basedir=/opt/mysql8.4.8
# 设置mysql数据库的数据的存放目录
datadir=/opt/mysql8.4.8/data
# 错误日志
log-error=/opt/mysql8.4.8/data/error.log
# pid 文件
pid-file=/opt/mysql8.4.8/data/mysqld.pid
# sock 文件
socket=/opt/mysql8.4.8/data/mysql.sock
# 慢查询日志开关
slow_query_log=1
# 慢查询日志路径
slow_query_log_file=/opt/mysql8.4.8/data/mysql-slow.log
# 慢查询日志时间(秒)
long_query_time=2
# 没有使用索引
log_queries_not_using_indexes=1
# 允许最大连接数
max_connections=2048
# 设置数据库的默认时区
default-time-zone=+08:00
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 忽略大小写
lower_case_table_names=1
# 允许goup by出现其他列
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

初始化 mysql:

1
/opt/mysql8.4.8/bin/mysqld --initialize --user=mysql

NOTE:这时容易出现一个 error

如下命令解决:

1
2
3
4
apt install numactl libaio1t64 -y
cd /usr/lib/x86_64-linux-gnu/
ln -s libaio.so.1t64.0.2 libaio.so.1
ln -s libncursesw.so.6.4 libncurses.so.6

再次初始化:

1
/opt/mysql8.4.8/bin/mysqld --initialize --user=mysql

查看初始密码:

1
cat /opt/mysql8.4.8/data/error.log

我们继续配置 systemd,用来安全管理 mysql 服务:

创建服务:

1
vim /etc/systemd/system/mysqld.service

写入配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=MySql Service
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
Type=notify
NotifyAccess=all
ExecStart=/opt/mysql8.4.8/bin/mysqld
Restart=on-failure
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

重新加载 systemd:

1
systemctl daemon-reload

设置开机启动:

1
systemctl enable mysqld.service

现在可以启动服务了:

1
systemctl start mysqld.service

检查服务状态:

1
systemctl status mysqld.service

其他命令:

1
2
3
4
# 停止服务systemctl stop mysqld.service
# 重启服务systemctl restart mysqld.service
# 查看启动日志(最后100行)journalctl -u mysqld.service -n 100
# 查看错误日志(最后100行)tail -100 /opt/mysql8/data/error.log