MariaDB源码安装部署手册

柳三千

文章最后更新时间:2025年06月09日

MariaDB 源码安装部署手册

目录

  1. 环境准备
  2. 用户和组配置
  3. 源码编译安装
  4. 配置文件设置
  5. 数据库初始化
  6. Systemd服务配置
  7. 环境变量配置
  8. 启动与验证
  9. 一键部署脚本

环境准备

安装必要的编译依赖:

Debian/Ubuntu 系统

sudo apt-get update
sudo apt-get install -y cmake gcc g++ make bison libncurses5-dev \
     libssl-dev libz-dev libcurl4-openssl-dev

CentOS/RHEL/Rocky Linux 系统

sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y cmake bison ncurses-devel \
     openssl-devel zlib-devel libcurl-devel

用户和组配置

创建专用用户和组:

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

源码编译安装

cd /usr/local/src
tar zxvf mariadb-10.11.13.tar.gz
cd mariadb-10.11.13
mkdir build
cd build
cmake .. \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
  -DMYSQL_DATADIR=/usr/local/mariadb/data \
  -DSYSCONFDIR=/etc \
  -DWITH_SSL=system \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
  -DWITH_ZLIB=system \
  -DWITH_LIBWRAP=0 \
  -DENABLED_LOCAL_INFILE=1 \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_unicode_ci \
  -DMYSQL_TCP_PORT=3306 \
  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
  -DCOMPILATION_COMMENT="MariaDB by Source"

make -j $(nproc)
sudo make install

配置文件设置

创建 /etc/my.cnf 文件:

[client]
port            = 3306
socket          = /tmp/mysql.sock

[mysqld]
user            = mysql
port            = 3306
socket          = /tmp/mysql.sock
basedir         = /usr/local/mariadb
datadir         = /usr/local/mariadb/data
tmpdir          = /tmp
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 8
query_cache_size = 8M
log_error = /usr/local/mariadb/data/mariadb-error.log
pid-file = /usr/local/mariadb/data/mariadb.pid

# InnoDB 配置
innodb_buffer_pool_size = 128M
innodb_log_file_size = 64M
innodb_thread_concurrency = 8

数据库初始化

sudo chown -R mysql:mysql /usr/local/mariadb
sudo /usr/local/mariadb/scripts/mysql_install_db \
  --user=mysql \
  --basedir=/usr/local/mariadb \
  --datadir=/usr/local/mariadb/data

Systemd服务配置

创建 /etc/systemd/system/mariadb.service

[Unit]
Description=MariaDB Server
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mariadb/bin/mysqld --basedir=/usr/local/mariadb
ExecStop=/usr/local/mariadb/bin/mysqladmin shutdown
Restart=always
TimeoutStartSec=60
TimeoutStopSec=10
RestartSec=5

[Install]
WantedBy=multi-user.target

加载服务配置:

sudo systemctl daemon-reload
sudo systemctl enable mariadb

环境变量配置

sudo ln -s /usr/local/mariadb/bin/mysql /usr/bin/mysql

启动与验证

sudo systemctl start mariadb
sudo systemctl status mariadb
mysql --version

一键部署脚本

#!/bin/bash

#安装包准备
software='/usr/local/src/mariadb-10.11.13.tar.gz'
version='mariadb-10.11.13'

# 确保以root权限运行
if [ "$(id -u)" != "0" ]; then
   echo "此脚本必须以root用户运行" 1>&2
   exit 1
fi

# 1. 安装依赖
if [ -f /etc/debian_version ]; then
    echo "Debian/Ubuntu 系统检测,安装依赖..."
    apt-get update
    apt-get install -y cmake gcc g++ make bison libncurses5-dev \
        libssl-dev libz-dev libcurl4-openssl-dev
elif [ -f /etc/redhat-release ] || [ -f /etc/rocky-release ]; then
    echo "CentOS/RHEL/Rocky Linux 系统检测,安装依赖..."
    dnf groupinstall -y "Development Tools"
    dnf install -y cmake bison ncurses-devel \
        openssl-devel zlib-devel libcurl-devel
else
    echo "不支持的Linux发行版"
    exit 1
fi

# 2. 创建用户和组
echo "创建mysql用户和组..."
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 3. 编译安装

# 检查并进入工作目录
cd /usr/local/src || { echo "错误:无法进入 /usr/local/src 目录"; exit 1; }

# 检查安装包是否存在
if [ ! -f "$software" ]; then
    echo "错误:mariadb 安装包未找到在 /usr/local/src 目录"
    exit 1
fi

# 解压 MariaDB 源码
echo "开始解压 MariaDB..."
tar zxvf "$software" || { echo "错误:解压失败"; exit 1; }

# 进入解压后的目录
cd "$version" || { echo "错误:无法进入 $version 目录"; exit 1; }

# 创建并进入 build 目录
mkdir build
cd build || { echo "错误:无法进入 build 目录"; exit 1; }

# 后续编译命令...
echo "准备编译 MariaDB..."

cmake .. \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
  -DMYSQL_DATADIR=/usr/local/mariadb/data \
  -DSYSCONFDIR=/etc \
  -DWITH_SSL=system \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
  -DWITH_ZLIB=system \
  -DWITH_LIBWRAP=0 \
  -DENABLED_LOCAL_INFILE=1 \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_unicode_ci \
  -DMYSQL_TCP_PORT=3306 \
  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
  -DCOMPILATION_COMMENT="MariaDB by Source"

make -j $(nproc)
make install

# 4. 配置文件
echo "创建/etc/my.cnf配置文件..."
cat > /etc/my.cnf << EOF
[client]
port            = 3306
socket          = /tmp/mysql.sock

[mysqld]
user            = mysql
port            = 3306
socket          = /tmp/mysql.sock
basedir         = /usr/local/mariadb
datadir         = /usr/local/mariadb/data
tmpdir          = /tmp
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 8
query_cache_size = 8M
log_error = /usr/local/mariadb/data/mariadb-error.log
pid-file = /usr/local/mariadb/data/mariadb.pid

# InnoDB 配置
innodb_buffer_pool_size = 128M
innodb_log_file_size = 64M
innodb_thread_concurrency = 8
EOF

# 5. 权限设置和初始化
echo "设置权限和初始化数据库..."
chown -R mysql:mysql /usr/local/mariadb
/usr/local/mariadb/scripts/mysql_install_db \
  --user=mysql \
  --basedir=/usr/local/mariadb \
  --datadir=/usr/local/mariadb/data

# 6. Systemd服务
echo "配置systemd服务..."
cat > /etc/systemd/system/mariadb.service << EOF
[Unit]
Description=MariaDB Server
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mariadb/bin/mysqld --basedir=/usr/local/mariadb
ExecStop=/usr/local/mariadb/bin/mysqladmin shutdown
Restart=always
TimeoutStartSec=60
TimeoutStopSec=10
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable mariadb

# 7. 创建符号链接
echo "创建环境符号链接..."
ln -sf /usr/local/mariadb/bin/mysql /usr/bin/mysql

# 8. 启动服务
echo "启动MariaDB服务..."
systemctl start mariadb

# 9. 验证安装
echo "验证安装..."
mysql --version
systemctl status mariadb --no-pager

echo "MariaDB 安装完成!"

使用说明

  1. 将上述脚本保存为 install_mariadb.sh
  2. 赋予执行权限:chmod +x install_mariadb.sh
  3. 以root用户执行:sudo ./install_mariadb.sh
  4. 确保 /usr/local/src 目录存在 mariadb-10.11.13.tar.gz 源码包

注意:编译过程可能需要较长时间(30-60分钟),具体取决于系统配置

文章版权声明:除非注明,否则均为柳三千运维录原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码