文章最后更新时间:2025年06月09日
MariaDB 源码安装部署手册
目录
环境准备
安装必要的编译依赖:
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 安装完成!"
使用说明
- 将上述脚本保存为
install_mariadb.sh
- 赋予执行权限:
chmod +x install_mariadb.sh
- 以root用户执行:
sudo ./install_mariadb.sh
- 确保
/usr/local/src
目录存在mariadb-10.11.13.tar.gz
源码包
注意:编译过程可能需要较长时间(30-60分钟),具体取决于系统配置
文章版权声明:除非注明,否则均为柳三千运维录原创文章,转载或复制请以超链接形式并注明出处。