之前完成了 Apache 的安装配置,实现了 Web 服务器的基础服务,可以通过纯 HTML 搭建一个简单的网站。但如果要使用动态网站模板(如 WordPress, Typecho),就需要配置数据库服务。这里我们选择 MariaDB(MySQL 的开源分支)。
同样,为了方便操作,我把所有步骤写到了一个可执行文件内,下载后执行即可:
wget https://blog.nyankowo.com/bash/installmariadb.sh && chmod +x installmariadb.sh && bash installmariadb.sh1. 删除原数据库
CentOS 等系统通常会自带一个最小安装的 MariaDB 库,为了防止冲突,如果有需要先把系统自带的删除:
# 查找并删除旧的配置文件
find -H /etc/ | grep my.c
rm -rf /etc/my.cnf /etc/my.cnf.d/
# 查找并卸载自带的 mariadb-libs
rpm -qa | grep mariadb-libs
rpm -e --nodeps mariadb-libs 2. 创建目录与编译安装
下载源码包并编译数据库。注意:编译时间可能较长,请耐心等待。
# 创建必要的目录结构
mkdir -pv /usr/local/mariadb/data /usr/local/mariadb/log /usr/local/mariadb/sock /usr/local/mariadb/etc
# 创建专属用户组和用户
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin -d /usr/local/mariadb/data -M mysql
# 安装编译依赖
yum install ncurses-devel -y
# 下载源码 (使用清华源加速)
wget https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-11.4.3/source/mariadb-11.4.3.tar.gz -P /usr/local/src
tar -xvf /usr/local/src/mariadb-11.4.3.tar.gz -C /usr/local/src && cd /usr/local/src/mariadb-11.4.3
# 执行 CMake 编译配置
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
-DMYSQL_DATADIR=/usr/local/mariadb/data \
-DSYSCONFDIR=/usr/local/mariadb/etc \
-DMYSQL_USER=mysql \
-DWITHOUT_TOKUDB=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mariadb/sock/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LOBWRAP=0 \
&& make && make install3. 配置服务自启
为了方便管理,我们将 MariaDB 注册为 Systemd 服务,并添加环境变量。
# 创建 Systemd 服务文件
cat <<EOL | sudo tee /etc/systemd/system/mariadb.service
[Unit]
Description=MariaDB Database Server
After=network.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mariadb/bin/mysqld --defaults-file=/usr/local/mariadb/etc/my.cnf
ExecStop=/bin/kill -TERM $MAINPID
PIDFile=/usr/local/mariadb/data/mysqld.pid
TimeoutSec=300
[Install]
WantedBy=multi-user.target
EOL
# 重载配置并启动服务
sudo systemctl daemon-reload
systemctl enable mariadb
systemctl start mariadb
# 添加环境变量
sed -i '$aexport PATH=$PATH:/usr/local/mariadb/bin' /etc/profile
source /etc/profile4. 初始化数据库
在初始化数据库时,官方脚本中包含了一些权限检查命令(如 chown 和 chmod),在自定义目录编译安装时可能会导致报错。我们需要修改脚本,注释掉这些检查行。
故障排查:如果执行 mysql_install_db 时报错提示找不到 mysql.sock:
- 如果目录下没有
mysql.sock文件夹:在安装目录下运行./bin/mariadbd-safe。 - 如果目录下有此文件夹:运行
./bin/mariadb-upgrade。
# 赋予权限 (注意:777 权限较为宽松,生产环境建议根据实际情况收紧为 755 或 750)
chown -R mysql:mysql /usr/local/mariadb
chmod 777 -R /usr/local/mariadb
# 修改初始化脚本,注释掉可能导致报错的权限检查命令
sed -i $'s/chown 0/#chown 0/g' /usr/local/mariadb/scripts/mysql_install_db
sed -i $'s/chmod 04/#chmod 04/g' /usr/local/mariadb/scripts/mysql_install_db
sed -i $'s/chown \$user \"\$p/#chown \$user \"\$p/g' /usr/local/mariadb/scripts/mysql_install_db
sed -i $'s/chmod 07/#chmod 07/g' /usr/local/mariadb/scripts/mysql_install_db
# 执行初始化
/usr/local/mariadb/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mariadb/data5. 执行安全配置
数据库安装完成后,默认是未加密且允许匿名登录的。运行 ./bin/mysql_secure_installation 进行安全加固:
Enter current password for root (enter for none): <直接回车>
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
New password: <输入新root密码>
Re-enter new password: <确认输入root密码>
Remove anonymous users? [Y/n] Y (删除匿名用户)
Disallow root login remotely? [Y/n] Y (禁止root远程登录)
Remove test database and access to it? [Y/n] Y (删除测试库)
Reload privilege tables now? [Y/n] Y (刷新权限表) 最后在终端中,执行 mysql -u root -p 命令并输入密码,如果显示如下界面,说明数据库已成功安装并运行:
