概述
MySQL 8.4 是官方 LTS(长期支持)版本,相比 8.0 系列在性能和安全性上有不少改进。本文使用官方二进制包在 Linux 上安装 MySQL 8.4.10,覆盖下载、配置、初始化、systemd 托管到修改密码的完整流程,适合生产环境部署参考。
二进制包安装方式不依赖系统包管理器,适合离线环境或需要自定义安装路径的场景。
- 下载解压
cd /data
wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.10-linux-glibc2.28-x86_64.tar.xz
tar xf mysql-8.4.10-linux-glibc2.28-x86_64.tar.xz
mv mysql-8.4.10-linux-glibc2.28-x86_64 mysql8.4.10
如果服务器是离线环境,可以到官网下载后手动上传到服务器。
- 配置环境变量
vi /etc/profile
export MYSQL_HOME=/data/mysql8.4.10
export PATH=PATH:{PATH}:PATH:{MYSQL_HOME}/bin
source /etc/profile
- 配置文件
创建并编辑 my.cnf:
cd mysql8.4.10
vi my.cnf
mysqld
设置 3306 端口
port=3306
设置 mysql 的安装目录
basedir=/data/mysql8.4.10
设置 mysql 数据库的数据存放目录
datadir=/data/mysql8.4.10/data
指定存放进程 ID 的文件
pid_file=/data/mysql8.4.10/data/mysql.pid
指定错误日志路径
log_error=/data/mysql8.4.10/data/mysql.error
允许最大连接数
max_connections=1000
允许连接失败的次数。防止有人从该主机试图攻击数据库系统
max_connect_errors=10
服务端使用的字符集默认为 UTF8MB4
character-set-server=utf8mb4
创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
表名大小写不敏感(0 敏感 / 1 不敏感)
lower_case_table_names=1
mysql
设置 mysql 客户端连接服务端时默认使用的端口
default-character-set=utf8mb4
注意:lower_case_table_names 必须在初始化之前确定,初始化后修改会导致数据目录不一致。Windows 下默认值为 1,Linux 下默认值为 0,迁移数据前务必确认两边一致。
- 创建用户组和用户
出于安全考虑,MySQL 使用独立系统用户运行,不使用 root:
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
-s /bin/false 禁止该用户登录系统,仅用于运行进程。
- 配置目录权限
chown mysql:mysql -R /data/mysql8.4.10
chmod -R 755 /data/mysql8.4.10
- 初始化数据库
/data/mysql8.4.10/bin/mysqld --console --initialize --user=mysql
cat /data/mysql8.4.10/data/mysql.error
初始化完成后,查看错误日志最后一行,会输出 root 临时密码,务必保存,首次登录要用。
- 配置 systemd 服务
vi /etc/systemd/system/mysql.service
Unit
Description=MySQL Server
Documentation=man:mysqld(8)
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
ExecStart=/data/mysql8.4.10/bin/mysqld --defaults-file=/data/mysql8.4.10/my.cnf
LimitNOFILE = 65535
加载服务配置:
systemctl daemon-reload
- 启动 MySQL
systemctl start mysql
设置开机启动:
systemctl enable mysql
- 登录并修改密码
使用初始化时生成的临时密码登录:
mysql -uroot -p
修改 root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';
允许 root 远程登录(按需开启):
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
常见问题
Q:MySQL 8.4 默认认证插件是什么?
MySQL 8.0 起默认使用 caching_sha2_password,8.4 中 mysql_native_password 默认禁用。如果旧客户端(如老版本 JDBC)连接报认证错误,需要显式启用:
mysqld
mysql-native-password=ON
Q:初始化时报 libaio.so.1 缺失?
需要安装 libaio 依赖:
yum install -y libaio
Q:无法远程连接?
检查三点:my.cnf 端口配置、防火墙放行、用户 host 是否为 %:
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
总结
安装流程可以总结为五步:解压 → 配置 → 初始化 → systemd 托管 → 改密码。关键点:
lower_case_table_names 要在初始化前确定
初始化临时密码保存在错误日志中,注意保存
用独立用户运行 MySQL,不要用 root
8.4 默认禁用 mysql_native_password,老客户端需显式开启