外观
MariaDB 在 Linux 上安装
MariaDB 支持多种 Linux 发行版,包括 Red Hat/CentOS、Debian/Ubuntu、SUSE 等。本文将介绍在不同 Linux 发行版上安装 MariaDB 的方法,包括使用官方仓库、发行版自带仓库和源码编译等方式。
选择安装方式
官方仓库安装(推荐)
使用 MariaDB 官方仓库安装是推荐的方式,因为可以获得最新版本的 MariaDB,并且可以通过包管理器自动更新。
发行版自带仓库安装
大多数 Linux 发行版都在其默认仓库中包含 MariaDB,但版本可能较旧。这种方式安装简单,但无法获得最新功能和安全更新。
源码编译安装
对于需要自定义配置或特定版本的场景,可以选择源码编译安装。这种方式灵活性高,但安装过程复杂,需要手动处理依赖和配置。
安装前准备
检查系统版本
在安装前,需要检查系统版本,以便选择合适的安装方式。
Red Hat/CentOS:
bash
cat /etc/redhat-releaseDebian/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.dDebian/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.repo2. 安装 MariaDB
bash
# 安装 MariaDB
yum install -y MariaDB-server MariaDB-client
# 启动服务
systemctl start mariadb
# 设置开机自启
systemctl enable mariadb使用发行版自带仓库安装
CentOS 7:
bash
yum install -y mariadb-server mariadbCentOS 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 update2. 安装 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 cmakeDebian/Ubuntu:
bash
apt-get install -y build-essential libncurses5-dev libssl-dev zlib1g-dev cmake2. 下载源码
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.113. 编译安装
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 install4. 配置和初始化
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_installation2. 配置文件优化
根据系统资源和业务需求,优化 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 = 23. 启动和停止服务
bash
# 启动服务
systemctl start mariadb
# 停止服务
systemctl stop mariadb
# 重启服务
systemctl restart mariadb
# 查看服务状态
systemctl status mariadb
# 查看服务日志
journalctl -u mariadb4. 基本测试
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 密码怎么办?
解决方案:
停止 MariaDB 服务
bashsystemctl stop mariadb以跳过授权表的方式启动 MariaDB
bashmysqld_safe --skip-grant-tables --skip-networking &登录并重置密码
bashmysql -u root UPDATE mysql.user SET password=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; EXIT;重启 MariaDB 服务
bashsystemctl 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 数据目录?
解决方案:
停止 MariaDB 服务
bashsystemctl stop mariadb复制数据目录到新位置
bashcp -a /var/lib/mysql /new/data/dir修改配置文件中的 datadir 选项
ini[mysqld] datadir = /new/data/dir设置权限
bashchown -R mysql:mysql /new/data/dir重启 MariaDB 服务
bashsystemctl restart mariadb
6. 如何查看 MariaDB 日志?
方法:
bash
# 错误日志
tail -f /var/log/mariadb/mariadb-error.log
# 慢查询日志
tail -f /var/log/mariadb/mariadb-slow.log
# 系统日志
journalctl -u mariadb7. 安装后无法启动服务怎么办?
解决方案:
- 检查配置文件语法是否正确:
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.dDebian/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 数据库。
