MariaDB安装与配置 #
一、安装概述 #
1.1 支持平台 #
| 平台 | 支持情况 |
|---|---|
| Linux | 完全支持(主要平台) |
| Windows | 完全支持 |
| macOS | 完全支持 |
| FreeBSD | 支持 |
| Docker | 支持 |
1.2 版本选择 #
text
版本类型
├── LTS(长期支持)
│ ├── 10.6 LTS(支持到2026年)
│ └── 10.11 LTS(支持到2028年)
├── Stable(稳定版)
│ └── 当前稳定版本
└── Development(开发版)
└── 最新特性版本
二、Linux安装 #
2.1 Ubuntu/Debian安装 #
bash
# 更新软件源
sudo apt update
# 安装MariaDB
sudo apt install mariadb-server mariadb-client
# 启动服务
sudo systemctl start mariadb
# 设置开机自启
sudo systemctl enable mariadb
# 检查状态
sudo systemctl status mariadb
2.2 使用官方仓库安装(Ubuntu) #
bash
# 安装依赖
sudo apt install curl software-properties-common
# 添加MariaDB仓库
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
# 安装MariaDB
sudo apt update
sudo apt install mariadb-server
# 启动服务
sudo systemctl start mariadb
sudo systemctl enable mariadb
2.3 CentOS/RHEL安装 #
bash
# CentOS 7
sudo yum install mariadb-server mariadb
# CentOS 8 / Rocky Linux / AlmaLinux
sudo dnf install mariadb-server mariadb
# 启动服务
sudo systemctl start mariadb
sudo systemctl enable mariadb
# 检查状态
sudo systemctl status mariadb
2.4 使用官方仓库安装(CentOS/RHEL) #
bash
# 创建MariaDB仓库配置
sudo cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.11/centos7-amd64
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
EOF
# 安装
sudo yum install MariaDB-server MariaDB-client
# 启动
sudo systemctl start mariadb
sudo systemctl enable mariadb
2.5 安全配置 #
bash
# 运行安全配置脚本
sudo mariadb-secure-installation
# 交互式配置
# 1. 设置root密码
# 2. 移除匿名用户
# 3. 禁止root远程登录
# 4. 移除测试数据库
# 5. 重新加载权限表
三、Windows安装 #
3.1 下载安装包 #
text
下载地址
├── 官方下载
│ └── https://mariadb.org/download/
├── 版本选择
│ ├── ZIP Archive(免安装版)
│ └── MSI Package(安装版)
└── 架构选择
├── 64-bit(推荐)
└── 32-bit
3.2 MSI安装 #
powershell
# 1. 双击MSI文件启动安装向导
# 2. 选择安装类型
# - Typical:典型安装
# - Custom:自定义安装
# - Complete:完整安装
# 3. 设置root密码
# 4. 配置服务
# - 服务名称:MySQL(兼容MySQL)
# - 启动类型:自动
# 5. 完成安装
3.3 ZIP免安装版 #
powershell
# 解压到目标目录
# 例如:C:\mariadb-10.11.0-winx64
# 创建配置文件
# C:\mariadb-10.11.0-winx64\my.ini
[mysqld]
basedir=C:/mariadb-10.11.0-winx64
datadir=C:/mariadb-10.11.0-winx64/data
port=3306
character-set-server=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
# 初始化数据目录
cd C:\mariadb-10.11.0-winx64\bin
.\mariadb-install-db.exe --service=MariaDB --password=your_password
# 启动服务
net start MariaDB
# 或手动启动
.\mysqld.exe --console
3.4 Windows服务管理 #
powershell
# 启动服务
net start MariaDB
net start MySQL
# 停止服务
net stop MariaDB
net stop MySQL
# 查看服务状态
sc query MariaDB
# 删除服务
.\mariadb-install-db.exe --remove
四、macOS安装 #
4.1 Homebrew安装 #
bash
# 安装Homebrew(如未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装MariaDB
brew install mariadb
# 启动服务
brew services start mariadb
# 停止服务
brew services stop mariadb
# 重启服务
brew services restart mariadb
4.2 手动安装 #
bash
# 下载DMG或TAR包
# 解压并移动到/usr/local/
# 初始化
cd /usr/local/mariadb
./scripts/mysql_install_db --user=$(whoami)
# 启动
./bin/mysqld_safe &
# 连接
./bin/mysql -u root
4.3 安全配置 #
bash
# 运行安全脚本
/usr/local/bin/mariadb-secure-installation
# 或使用mysql_secure_installation
mysql_secure_installation
五、Docker安装 #
5.1 基本安装 #
bash
# 拉取镜像
docker pull mariadb:10.11
# 运行容器
docker run -d \
--name mariadb \
-e MYSQL_ROOT_PASSWORD=your_password \
-e MYSQL_DATABASE=mydb \
-p 3306:3306 \
-v mariadb_data:/var/lib/mysql \
mariadb:10.11
# 查看日志
docker logs mariadb
# 进入容器
docker exec -it mariadb mariadb -u root -p
5.2 Docker Compose #
yaml
# docker-compose.yml
version: '3.8'
services:
mariadb:
image: mariadb:10.11
container_name: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
ports:
- "3306:3306"
volumes:
- mariadb_data:/var/lib/mysql
- ./my.cnf:/etc/mysql/conf.d/my.cnf
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
mariadb_data:
bash
# 启动
docker-compose up -d
# 停止
docker-compose down
# 查看日志
docker-compose logs -f mariadb
六、配置详解 #
6.1 配置文件位置 #
| 系统 | 位置 |
|---|---|
| Linux | /etc/my.cnf, /etc/mysql/my.cnf |
| Windows | C:\ProgramData\MariaDB\my.ini |
| macOS | /usr/local/etc/my.cnf |
| Docker | /etc/mysql/my.cnf |
6.2 基础配置 #
ini
[mysqld]
# 基本设置
user = mysql
port = 3306
basedir = /usr
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
# 连接设置
max_connections = 200
max_connect_errors = 100
wait_timeout = 28800
interactive_timeout = 28800
# 缓冲区设置
key_buffer_size = 256M
max_allowed_packet = 64M
table_open_cache = 4000
sort_buffer_size = 4M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
join_buffer_size = 4M
# 日志设置
log_error = /var/log/mariadb/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow.log
long_query_time = 2
# InnoDB设置
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set = utf8mb4
[mysql]
no-auto-rehash
default-character-set = utf8mb4
6.3 性能优化配置 #
ini
[mysqld]
# 内存配置(根据服务器内存调整)
# 假设服务器有8GB内存
# InnoDB缓冲池(物理内存的50-70%)
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 4
# 日志配置
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 2
# 查询缓存(MariaDB 10.5+已移除)
# query_cache_type = 1
# query_cache_size = 128M
# 临时表
tmp_table_size = 64M
max_heap_table_size = 64M
# 排序和连接缓冲
sort_buffer_size = 8M
join_buffer_size = 8M
read_buffer_size = 4M
read_rnd_buffer_size = 16M
# 线程缓存
thread_cache_size = 64
thread_concurrency = 16
# 表缓存
table_open_cache = 8000
table_definition_cache = 2000
6.4 安全配置 #
ini
[mysqld]
# 禁用本地文件加载
local_infile = 0
# 禁用符号链接
symbolic-links = 0
# 跳过DNS解析
skip-name-resolve
# 只允许本地连接
bind-address = 127.0.0.1
# 禁用匿名用户
skip-grant-tables = 0
# SSL配置
ssl-ca = /etc/mysql/ssl/ca.pem
ssl-cert = /etc/mysql/ssl/server-cert.pem
ssl-key = /etc/mysql/ssl/server-key.pem
# 密码验证插件
plugin_load_add = simple_password_check
simple_password_check_minimal_length = 8
七、连接MariaDB #
7.1 命令行连接 #
bash
# 本地连接
mariadb -u root -p
# 或使用mysql命令(兼容)
mysql -u root -p
# 指定主机和端口
mariadb -h 127.0.0.1 -P 3306 -u root -p
# 指定数据库
mariadb -u root -p mydb
# 执行SQL文件
mariadb -u root -p mydb < script.sql
# 执行SQL命令
mariadb -u root -p -e "SELECT VERSION();"
7.2 连接参数 #
| 参数 | 说明 |
|---|---|
| -u | 用户名 |
| -p | 密码 |
| -h | 主机地址 |
| -P | 端口号 |
| -D | 数据库名 |
| -e | 执行命令 |
| -S | socket文件 |
| –protocol | 协议类型 |
7.3 配置文件连接 #
ini
# ~/.my.cnf
[client]
user = root
password = your_password
host = localhost
port = 3306
# 使用
mariadb
八、服务管理 #
8.1 Linux服务管理 #
bash
# systemctl管理
sudo systemctl start mariadb
sudo systemctl stop mariadb
sudo systemctl restart mariadb
sudo systemctl status mariadb
sudo systemctl enable mariadb
sudo systemctl disable mariadb
# 查看日志
sudo journalctl -u mariadb
# 重新加载配置
sudo systemctl reload mariadb
8.2 手动启动 #
bash
# 启动
mysqld_safe --user=mysql &
# 停止
mysqladmin -u root -p shutdown
# 检查进程
ps aux | grep mysql
# 检查端口
netstat -tlnp | grep 3306
8.3 多实例管理 #
bash
# 配置多实例
# /etc/my.cnf
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = multipass
[mysqld1]
port = 3306
datadir = /var/lib/mysql1
socket = /var/lib/mysql1/mysql.sock
[mysqld2]
port = 3307
datadir = /var/lib/mysql2
socket = /var/lib/mysql2/mysql.sock
# 启动多实例
mysqld_multi start
mysqld_multi start 1
mysqld_multi start 2
# 查看状态
mysqld_multi report
九、验证安装 #
9.1 检查版本 #
sql
-- 连接后执行
SELECT VERSION();
-- 结果示例
+-----------------+
| VERSION() |
+-----------------+
| 10.11.2-MariaDB |
+-----------------+
-- 查看详细信息
SHOW VARIABLES LIKE '%version%';
9.2 检查状态 #
sql
-- 查看状态
SHOW STATUS;
-- 查看引擎
SHOW ENGINES;
-- 查看变量
SHOW VARIABLES;
-- 查看字符集
SHOW VARIABLES LIKE 'character%';
-- 查看连接数
SHOW STATUS LIKE 'Threads_connected';
9.3 测试连接 #
bash
# 测试本地连接
mariadb -u root -p -e "SELECT 1;"
# 测试远程连接
mariadb -h remote_host -u user -p -e "SELECT 1;"
# 测试性能
mariadb -u root -p -e "SELECT BENCHMARK(1000000, 1+1);"
十、常见问题 #
10.1 无法启动 #
bash
# 检查错误日志
tail -f /var/log/mariadb/error.log
# 检查权限
ls -la /var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
# 检查配置
mariadbd --validate-config
# 初始化数据目录
mariadb-install-db --user=mysql
10.2 连接被拒绝 #
bash
# 检查服务状态
sudo systemctl status mariadb
# 检查端口
sudo netstat -tlnp | grep 3306
# 检查防火墙
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
# 检查用户权限
mariadb -u root -p -e "SELECT user, host FROM mysql.user;"
10.3 密码忘记 #
bash
# 停止服务
sudo systemctl stop mariadb
# 跳过权限启动
mysqld_safe --skip-grant-tables &
# 连接并修改密码
mariadb -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
# 重启服务
sudo systemctl restart mariadb
十一、总结 #
安装配置要点:
| 步骤 | 说明 |
|---|---|
| 选择版本 | LTS版本适合生产环境 |
| 安装方式 | 包管理器或官方仓库 |
| 安全配置 | 运行安全脚本 |
| 配置优化 | 根据硬件调整参数 |
| 验证测试 | 确保服务正常运行 |
下一步,让我们学习MariaDB基础语法!
最后更新:2026-03-27