6.2.3 安装方式对比:YUM/APT、二进制、源码
安装方式对比:YUM/APT、二进制、源码#
总体对比维度(简表)
- 便捷性:YUM/APT > 二进制 > 源码
- 版本可控性:源码 ≈ 二进制 > YUM/APT
- 运维成本:YUM/APT最低,源码最高
- 适用场景:生产常用二进制与YUM/APT,源码多用于定制与学习
原理草图(安装链路)
1)YUM/APT 包管理安装#
适用:标准化环境、快速交付、版本无需强控制
示例(CentOS/RHEL)
# 1. 安装官方仓库
sudo rpm -ivh https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm
# 2. 查看可用版本
yum list mysql-community-server --showduplicates | tail -n 5
# 3. 安装
sudo yum -y install mysql-community-server
# 4. 启动并设为开机自启
sudo systemctl enable --now mysqld
# 5. 获取临时root密码
sudo grep 'temporary password' /var/log/mysqld.log
命令解释
- mysql80-community-release:引入官方YUM仓库
- mysql-community-server:安装服务端包
- systemctl enable --now:启用并立即启动服务
- mysqld.log:临时密码写入日志
APT(Ubuntu/Debian)示例
# 1. 添加官方仓库
wget https://repo.mysql.com/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
# 2. 更新索引与安装
sudo apt update
sudo apt install -y mysql-server
# 3. 服务状态
sudo systemctl status mysql
常见问题与排错
# 1. 服务起不来,查看日志
sudo journalctl -u mysqld -n 200 --no-pager
# 2. 端口被占用
sudo ss -lntp | grep 3306
# 3. 版本被自动升级,锁定版本
sudo yum versionlock add mysql-community-server
2)二进制包安装(官方 tar 包)#
适用:生产常见方式,需固定版本或自定义目录
示例(通用Linux)
# 1. 下载安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-linux-glibc2.28-x86_64.tar.xz
# 2. 解压与目录规划
sudo mkdir -p /opt/mysql
sudo tar -xf mysql-8.0.33-linux-glibc2.28-x86_64.tar.xz -C /opt/mysql --strip-components=1
# 3. 创建用户与目录
sudo useradd -r -s /sbin/nologin mysql
sudo mkdir -p /data/mysql/{data,logs,run}
sudo chown -R mysql:mysql /opt/mysql /data/mysql
# 4. 配置文件
sudo tee /etc/my.cnf >/dev/null <<'EOF'
[mysqld]
basedir=/opt/mysql
datadir=/data/mysql/data
socket=/data/mysql/run/mysql.sock
log_error=/data/mysql/logs/mysqld.err
pid-file=/data/mysql/run/mysqld.pid
port=3306
EOF
# 5. 初始化
sudo /opt/mysql/bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/data/mysql/data
# 6. 注册systemd服务
sudo tee /etc/systemd/system/mysqld.service >/dev/null <<'EOF'
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now mysqld
命令解释
- --initialize:初始化数据目录并生成临时密码
- basedir/datadir:分离程序与数据
- systemd:统一服务管理
排错要点
# 1. 查看错误日志
tail -n 50 /data/mysql/logs/mysqld.err
# 2. 权限问题
sudo chown -R mysql:mysql /data/mysql /opt/mysql
# 3. socket路径不一致
ls -l /data/mysql/run/mysql.sock
3)源码编译安装#
适用:特定补丁、编译选项或实验验证
示例(包含依赖与编译)
# 1. 依赖安装(以CentOS为例)
sudo yum -y install gcc gcc-c++ cmake ncurses-devel openssl-devel bison
# 2. 下载源码并编译
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33.tar.gz
tar -xf mysql-8.0.33.tar.gz
cd mysql-8.0.33
mkdir build && cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DMYSQL_DATADIR=/data/mysql/data \
-DWITH_SSL=system \
-DWITH_ZLIB=system
make -j4
sudo make install
解释
- -DCMAKE_INSTALL_PREFIX:安装路径
- -DMYSQL_DATADIR:默认数据目录
- WITH_SSL/ZLIB:指定系统库
排错要点
# 1. 缺失依赖
cmake .. 2>&1 | grep -i "missing"
# 2. 编译失败查看错误
make 2>&1 | tail -n 50
选型建议(含示例结论)#
- 小规模/测试:YUM/APT,安装快、维护省
- 生产环境:二进制,版本可控、稳定性高
- 特殊需求:源码,仅在有明确编译/补丁需求时使用
练习与验证#
- 使用YUM/APT安装MySQL并获取临时密码,登录后修改密码。
- 用二进制包安装到
/opt/mysql,数据目录放/data/mysql/data,验证mysql -uroot -p -S /data/mysql/run/mysql.sock能登录。 - 故意将
datadir权限改错,观察日志错误并修复。