1、安装依赖工具
# 更新系统并安装基础工具
sudo dnf update -y
sudo dnf groupinstall "Development Tools" -y
sudo dnf install cmake ncurses-devel openssl-devel bison libtirpc-devel rpcgen ncurses-compat-libs -y
以上第三步如果出现如下错误:
No match for argument: ncurses-compat-libs Error: Unable to find a match: libtirpc-devel ncurses-compat-libs
解决方法:
替换包:
ncurses-compat-libs
→ncurses-base
确保
libtirpc-devel
在基础仓库可用(若仍报错,启用 CRB 仓库):bash
sudo dnf config-manager --set-enabled crbsudo dnf install libtirpc-devel
额外依赖(如编译报错):
bash
sudo dnf install rpcgen gcc-toolset-12-binutils -y
然后重新执行上面第3步骤
2、下载MySQL8源码
cd /usr/local/src
# 下载源码包 (以 8.0.36 为例,替换为最新版)
sudo wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36.tar.gz
# 解压并进入目录
sudo tar -zxvf mysql-8.0.36.tar.gz
cd mysql-8.0.36
3、创建系统用户和目录
# 创建 MySQL 用户
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
# 创建安装目录和数据目录
sudo mkdir -p /usr/local/mysql
sudo mkdir -p /usr/local/mysql/data
4、编译配置选项
# 创建编译目录
mkdir build
cd build
# CMake 配置 (关键参数)
sudo cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_SSL=system \
-DWITH_BOOST=../boost \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SYSTEMD=1
注意:
若缺少 boost 库,需额外下载解压到源码目录并指定
-DWITH_BOOST=../boost
若 CMake 失败,删除
CMakeCache.txt
后重试
5、编译和安装
# 编译 (根据 CPU 核心数调整 -j 参数)
sudo make -j$(nproc)
# 安装
sudo make install
6、配置mysql
# 设置目录权限
sudo chown -R mysql:mysql /usr/local/mysql
# 初始化数据库
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 记录初始密码 (在输出末尾)
sudo grep 'temporary password' /var/log/mysqld.log
7、创建systemd服务
sudo tee /etc/systemd/system/mysqld.service <<'EOF'
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
EOF
8、配置文件/etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
9、启动mysql
sudo systemctl daemon-reload
sudo systemctl start mysqld
sudo systemctl enable mysqld
10、首次登录和修改密码
# 使用初始密码登录
/usr/local/mysql/bin/mysql -u root -p
11、设置环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bashrc
source ~/.bashrc
12、验证安装
mysqladmin --version
systemctl status mysqld