Skip to content

MariaDB 在 Linux 上安装

MariaDB 支持多种 Linux 发行版,包括 Red Hat/CentOS、Debian/Ubuntu、SUSE 等。本文将介绍在不同 Linux 发行版上安装 MariaDB 的方法,包括使用官方仓库、发行版自带仓库和源码编译等方式。

选择安装方式

官方仓库安装(推荐)

使用 MariaDB 官方仓库安装是推荐的方式,因为可以获得最新版本的 MariaDB,并且可以通过包管理器自动更新。

发行版自带仓库安装

大多数 Linux 发行版都在其默认仓库中包含 MariaDB,但版本可能较旧。这种方式安装简单,但无法获得最新功能和安全更新。

源码编译安装

对于需要自定义配置或特定版本的场景,可以选择源码编译安装。这种方式灵活性高,但安装过程复杂,需要手动处理依赖和配置。

安装前准备

检查系统版本

在安装前,需要检查系统版本,以便选择合适的安装方式。

Red Hat/CentOS

bash
cat /etc/redhat-release

Debian/Ubuntu

bash
lsb_release -a

检查现有 MariaDB/MySQL 安装

在安装前,需要检查系统中是否已经安装了 MariaDB 或 MySQL,避免冲突。

bash
# 检查 MariaDB/MySQL 服务状态
systemctl status mariadb mysql 2>/dev/null

# 检查已安装的包
dpkg -l | grep -E 'mariadb|mysql' 2>/dev/null || rpm -qa | grep -E 'mariadb|mysql' 2>/dev/null

如果已经安装了 MariaDB 或 MySQL,需要先备份数据,然后卸载现有版本。

卸载现有版本

Red Hat/CentOS

bash
# 停止服务
systemctl stop mariadb mysql 2>/dev/null

# 卸载包
yum remove -y mariadb mariadb-server mysql mysql-server

# 删除数据和配置文件
rm -rf /var/lib/mysql /etc/my.cnf /etc/my.cnf.d

Debian/Ubuntu

bash
# 停止服务
systemctl stop mariadb mysql 2>/dev/null

# 卸载包
apt-get remove -y mariadb-server mariadb-client mysql-server mysql-client

# 删除数据和配置文件
rm -rf /var/lib/mysql /etc/mysql

在 Red Hat/CentOS 上安装

使用官方仓库安装

1. 添加 MariaDB 官方仓库

根据系统版本选择合适的仓库文件。以 CentOS 7 为例:

bash
# 下载仓库文件
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

# 或者手动创建仓库文件
echo "[mariadb]
name = MariaDB
baseurl = https://rpm.mariadb.org/10.6/centos7-amd64
gpgkey=https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1" | sudo tee /etc/yum.repos.d/MariaDB.repo

2. 安装 MariaDB

bash
# 安装 MariaDB
yum install -y MariaDB-server MariaDB-client

# 启动服务
systemctl start mariadb

# 设置开机自启
systemctl enable mariadb

使用发行版自带仓库安装

CentOS 7

bash
yum install -y mariadb-server mariadb

CentOS 8

bash
dnf install -y mariadb-server mariadb

在 Debian/Ubuntu 上安装

使用官方仓库安装

1. 添加 MariaDB 官方仓库

以 Ubuntu 20.04 为例:

bash
# 安装依赖
apt-get install -y software-properties-common dirmngr

# 添加仓库密钥
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

# 添加仓库
add-apt-repository 'deb [arch=amd64] http://mirror.mariadb.org/repo/10.6/ubuntu focal main'

# 更新包列表
apt-get update

2. 安装 MariaDB

bash
# 安装 MariaDB
apt-get install -y mariadb-server mariadb-client

# 启动服务
systemctl start mariadb

# 设置开机自启
systemctl enable mariadb

使用发行版自带仓库安装

Debian/Ubuntu

bash
# 更新包列表
apt-get update

# 安装 MariaDB
apt-get install -y mariadb-server mariadb-client

在 SUSE 上安装

使用官方仓库安装

bash
# 添加 MariaDB 仓库
zypper addrepo --refresh https://downloads.mariadb.com/MariaDB/mariadb-10.6/sles/15/x86_64/ MariaDB

# 导入 GPG 密钥
rpm --import https://downloads.mariadb.com/MariaDB/mariadb_release_signing_key.asc

# 安装 MariaDB
zypper install -y MariaDB-server MariaDB-client

# 启动服务
systemctl start mariadb

# 设置开机自启
systemctl enable mariadb

使用发行版自带仓库安装

bash
# 安装 MariaDB
zypper install -y mariadb mariadb-client

源码编译安装

1. 安装依赖

Red Hat/CentOS

bash
yum groupinstall -y "Development Tools"
yum install -y ncurses-devel openssl-devel zlib-devel cmake

Debian/Ubuntu

bash
apt-get install -y build-essential libncurses5-dev libssl-dev zlib1g-dev cmake

2. 下载源码

bash
# 创建源码目录
mkdir -p /usr/local/src/mariadb
cd /usr/local/src/mariadb

# 下载源码包
wget https://downloads.mariadb.org/interstitial/mariadb-10.6.11/source/mariadb-10.6.11.tar.gz

# 解压源码包
tar -zxvf mariadb-10.6.11.tar.gz
cd mariadb-10.6.11

3. 编译安装

bash
# 创建编译目录
mkdir build
cd build

# 配置编译选项
cmake .. \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
  -DMYSQL_DATADIR=/var/lib/mysql \
  -DSYSCONFDIR=/etc \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system \
  -DWITH_LIBWRAP=0 \
  -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_unicode_ci

# 编译(使用 4 个核心)
make -j4

# 安装
make install

4. 配置和初始化

bash
# 创建用户和组
useradd -r -s /sbin/nologin mysql

# 设置权限
chown -R mysql:mysql /usr/local/mariadb
chown -R mysql:mysql /var/lib/mysql

# 初始化数据库
/usr/local/mariadb/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/var/lib/mysql

# 复制配置文件
cp /usr/local/mariadb/support-files/my-default.cnf /etc/my.cnf

# 复制启动脚本
cp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mariadb
chmod +x /etc/init.d/mariadb

# 启动服务
systemctl start mariadb

# 设置开机自启
systemctl enable mariadb

安装后配置

1. 安全设置

MariaDB 提供了 mysql_secure_installation 脚本,用于进行基本的安全设置,包括:

  • 设置 root 密码
  • 删除匿名用户
  • 禁止 root 远程登录
  • 删除测试数据库
bash
mysql_secure_installation

2. 配置文件优化

根据系统资源和业务需求,优化 MariaDB 配置文件。主要配置文件包括:

  • /etc/my.cnf(Red Hat/CentOS)
  • /etc/mysql/my.cnf(Debian/Ubuntu)

基本配置示例

ini
[mysqld]
# 基本设置
server-id = 1
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
pid-file = /var/run/mariadb/mariadb.pid

# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 内存设置
innodb_buffer_pool_size = 256M
key_buffer_size = 64M
max_allowed_packet = 64M

# 连接设置
max_connections = 100
wait_timeout = 600

# 日志设置
log_error = /var/log/mariadb/mariadb-error.log
slow_query_log = 1
slow_query_log_file = /var/log/mariadb/mariadb-slow.log
long_query_time = 2

3. 启动和停止服务

bash
# 启动服务
systemctl start mariadb

# 停止服务
systemctl stop mariadb

# 重启服务
systemctl restart mariadb

# 查看服务状态
systemctl status mariadb

# 查看服务日志
journalctl -u mariadb

4. 基本测试

bash
# 登录 MariaDB
mysql -u root -p

# 查看 MariaDB 版本
SELECT VERSION();

# 创建测试数据库
CREATE DATABASE test_db;

# 创建测试表
USE test_db;
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100));

# 插入测试数据
INSERT INTO test_table (name) VALUES ('test');

# 查询测试数据
SELECT * FROM test_table;

# 删除测试数据库
DROP DATABASE test_db;

# 退出 MariaDB
EXIT;

版本差异

MariaDB 10.0+

  • 引入了 Aria 存储引擎
  • 增强了 InnoDB 性能
  • 支持 Galera Cluster

MariaDB 10.1+

  • 引入了 Virtual Columns
  • 增强了动态列功能
  • 支持更多的存储引擎

MariaDB 10.2+

  • 支持 JSON 数据类型
  • 增强了 InnoDB 功能
  • 支持降序索引

MariaDB 10.3+

  • 引入了 Sequence 对象
  • 增强了 Galera Cluster 功能
  • 支持不可见索引

MariaDB 10.4+

  • 默认存储引擎改为 InnoDB
  • 增强了安全性
  • 支持更多的加密选项

MariaDB 10.5+

  • 引入了 Roles 功能
  • 增强了审计功能
  • 支持更多的监控指标

常见问题(FAQ)

1. 如何查看 MariaDB 版本?

方法

bash
# 命令行查看
mysql -V

# 登录后查看
SELECT VERSION();

2. 忘记 root 密码怎么办?

解决方案

  1. 停止 MariaDB 服务

    bash
    systemctl stop mariadb
  2. 以跳过授权表的方式启动 MariaDB

    bash
    mysqld_safe --skip-grant-tables --skip-networking &
  3. 登录并重置密码

    bash
    mysql -u root
    UPDATE mysql.user SET password=PASSWORD('new_password') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;
  4. 重启 MariaDB 服务

    bash
    systemctl restart mariadb

3. 如何允许 root 远程登录?

解决方案

bash
# 登录 MariaDB
mysql -u root -p

# 允许 root 远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# 或者只允许特定 IP 登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. 安装过程中遇到依赖问题怎么办?

解决方案

  • 使用官方仓库安装,自动处理依赖
  • 手动安装缺失的依赖包
  • 检查系统版本和架构是否与安装包匹配
  • 对于源码编译,确保安装了所有必需的开发依赖

5. 如何更改 MariaDB 数据目录?

解决方案

  1. 停止 MariaDB 服务

    bash
    systemctl stop mariadb
  2. 复制数据目录到新位置

    bash
    cp -a /var/lib/mysql /new/data/dir
  3. 修改配置文件中的 datadir 选项

    ini
    [mysqld]
    datadir = /new/data/dir
  4. 设置权限

    bash
    chown -R mysql:mysql /new/data/dir
  5. 重启 MariaDB 服务

    bash
    systemctl restart mariadb

6. 如何查看 MariaDB 日志?

方法

bash
# 错误日志
tail -f /var/log/mariadb/mariadb-error.log

# 慢查询日志
tail -f /var/log/mariadb/mariadb-slow.log

# 系统日志
journalctl -u mariadb

7. 安装后无法启动服务怎么办?

解决方案

  • 检查配置文件语法是否正确:mysqld --help --verbose
  • 检查数据目录权限:chown -R mysql:mysql /var/lib/mysql
  • 查看错误日志:tail -f /var/log/mariadb/mariadb-error.log
  • 检查端口是否被占用:netstat -tuln | grep 3306

8. 如何卸载 MariaDB?

解决方案

Red Hat/CentOS

bash
yum remove -y mariadb mariadb-server
rm -rf /var/lib/mysql /etc/my.cnf /etc/my.cnf.d

Debian/Ubuntu

bash
apt-get remove -y mariadb-server mariadb-client
rm -rf /var/lib/mysql /etc/mysql

最佳实践

1. 使用官方仓库安装

  • 官方仓库提供最新版本和安全更新
  • 自动处理依赖关系
  • 便于升级和管理

2. 定期更新

  • 定期更新 MariaDB 到最新稳定版
  • 及时应用安全补丁
  • 更新前备份数据和配置文件

3. 配置合理的安全设置

  • 使用强密码
  • 删除匿名用户和测试数据库
  • 限制 root 用户登录权限
  • 启用防火墙,限制访问 IP
  • 定期检查用户权限

4. 优化配置文件

  • 根据系统资源调整配置参数
  • 监控性能指标,及时调整配置
  • 针对不同的工作负载优化配置

5. 备份数据

  • 定期备份数据库
  • 测试备份的可用性
  • 存储备份到安全的位置

6. 监控和日志

  • 启用慢查询日志和错误日志
  • 定期分析日志,优化查询
  • 使用监控工具,如 Prometheus、Grafana 等

总结

MariaDB 在 Linux 上的安装方法因发行版和版本而异,DBA 需要根据实际情况选择合适的安装方式。使用官方仓库安装是推荐的方式,因为可以获得最新版本和自动更新。

安装后,需要进行基本的安全设置、配置文件优化和性能调优,确保 MariaDB 能够稳定、高效地运行。同时,需要定期更新、备份数据和监控系统状态,确保数据库的安全性和可靠性。

通过本文的介绍,相信您已经掌握了 MariaDB 在 Linux 上的安装和基本配置方法,能够在实际生产环境中顺利部署 MariaDB 数据库。