redhat9二进制安装mysql
虽然目前 RHEL 9 系列(截止 2026 年)通常以 9.4 或 9.5 为主,但二进制安装(Generic Binaries)的方法在所有 RHEL 9 版本中是通用的。
使用二进制包安装的好处是**不污染系统库**,且可以自定义安装路径。以下是标准安装流程:
### 一、 环境准备
在安装之前,需要清理系统自带的 mariadb 库并安装必要的依赖。
1. **卸载冲突包:**
```bash
dnf remove -y mariadb-libs
```
2. **安装依赖库:**
MySQL 运行需要 libaio 和 ncurses-compat-libs(RHEL 9 可能需要 ncurses-libs)。
```bash
dnf install -y libaio ncurses-libs pkgconf-pkg-config
```
### 二、 下载与解压
建议从 [可疑链接已删除] 下载对应 **Linux - Generic (glibc 2.28) (x86, 64-bit)** 的版本。
1. **创建用户与组:**
```bash
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
```
2. **解压安装包:**
假设你已下载 mysql-8.0.xx-linux-glibc2.28-x86_64.tar.xz。
```bash
tar -xvf mysql-8.0.xx-linux-glibc2.28-x86_64.tar.xz -C /usr/local/
cd /usr/local/
mv mysql-8.0.xx-linux-glibc2.28-x86_64 mysql
```
### 三、 目录配置与初始化
1. **创建数据目录:**
```bash
mkdir -p /data/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql
```
2. **初始化数据库:**
执行后请**务必记录**输出末尾生成的临时密码。
```bash
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
```
### 四、 配置文件 (/etc/my.cnf)
创建一个基础配置文件,确保路径指向正确。
```ini
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
port=3306
user=mysql
[mysql]
socket=/tmp/mysql.sock
```
### 五、 配置服务启动
1. **设置环境变量:**
```bash
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
```
2. **配置 Systemd 服务:**
创建 /etc/systemd/system/mysqld.service 文件:
```ini
[Unit]
Description=MySQL Server
After=network.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
```
3. **启动并自启:**
```bash
systemctl daemon-reload
systemctl enable --now mysqld
```
### 六、 安全加固
使用刚才记录的**临时密码**登录:
```bash
mysql -u root -p
```
进入后修改密码并允许远程访问(按需):
```sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;
```
### 💡 避坑指南
* **GLIBC 版本:** RHEL 9 使用的是较新的 glibc (2.34+),因此务必选择 glibc 2.28 或更高版本的二进制包,不要错下成 2.12/2.17 的版本。
* **防火墙:** 如果需要远程连接,记得开启端口:
firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload
* **SELinux:** 如果启动失败,可以先尝试 setenforce 0 排除权限干扰,或者针对数据目录设置上下文。
No Comments