下面以 Debian 11/12 为例,说明 从源码编译安装 MySQL(以 MySQL 8.0 为例) 的完整步骤。
(如果你只是想用 MySQL,官方 apt 安装会更简单;编译主要用于定制参数或学习)
sudo apt update
sudo apt upgrade -y
sudo apt install -y \
build-essential \
cmake \
bison \
libncurses5-dev \
libssl-dev \
pkg-config \
libaio-dev \
wget \
git
MySQL 8 需要 CMake ≥ 3.15
cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36.tar.gz
tar zxvf mysql-8.0.36.tar.gz
cd mysql-8.0.36
或使用 Boost(MySQL 8 需要):
wget https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.gz
tar zxvf boost_1_77_0.tar.gz
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
cd /usr/local/src/mysql-8.0.36
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITH_BOOST=/usr/local/src/boost_1_77_0 \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DCMAKE_BUILD_TYPE=Release
常见错误:
-DWITH_BOOSTmake -j$(nproc)
make install
编译时间较长(可能 30 分钟 ~ 数小时)
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
初始化后会输出 root 临时密码,请保存。
vim /etc/my.cnf
示例:
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
/usr/local/mysql/bin/mysqld_safe --user=mysql &
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld
/usr/local/mysql/bin/mysql_secure_installation
/usr/local/mysql/bin/mysql -uroot -p
mysqld_safe --skip-grant-tables &
apt install mysql-server如果你愿意,我可以:
你打算用在 生产还是学习?