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