作者:MK
日期:2026年3月5日
环境:AWS EC2 t3.micro, Amazon Linux 2023, MariaDB 10.5
前言
Amazon Linux 2023 (AL2023) 是 AWS 推出的新一代 Linux 发行版,专为云环境优化。与 CentOS/RHEL 不同,AL2023 默认使用 MariaDB 作为 MySQL 的替代品,并通过 DNF 包管理器 提供模块化安装。本文将详细介绍在 EC2 实例上从零开始部署 MariaDB 的完整流程,包括安全加固和性能优化。
一、环境准备
1.1 启动 EC2 实例
登录 AWS 控制台,启动新实例
AMI 选择:Amazon Linux 2023 AMI
实例类型:t3.micro(测试环境)或 t3.medium(生产环境)
安全组配置:开放 SSH (22) 和 MySQL (3306) 端口
密钥对:创建或选择现有 PEM 密钥


1.2 连接实例
# 修改密钥权限
chmod 400 your-key.pem
# SSH 连接(替换为你的公网 IP)
ssh -i your-key.pem ec2-user@<EC2-PUBLIC-IP>1.3 系统更新
# 更新系统包(AL2023 使用 dnf 而非 yum)
sudo dnf update -y
# 查看系统版本
cat /etc/os-release
# 输出:Amazon Linux 2023
二、安装 MariaDB
2.1 查看可用版本
AL2023 通过 AppStream 模块提供多版本 MariaDB:
# 方法1:搜索可用包
sudo dnf search mariadb | grep server
# 输出示例:
# mariadb105-server.x86_64 : MariaDB server
# mariadb1011-server.x86_64 : MariaDB server
# 方法2:查看可安装版本
sudo dnf list available mariadb*server*
# 方法3:查看已启用仓库中的包
sudo dnf repoquery -l mariadb*server*
2.2 安装 MariaDB 10.5
# 更新系统(可选但推荐)
sudo dnf update -y
# 直接安装指定版本(推荐)-----可以使用yum或者dnf来进行安装
sudo yum install -y mariadb105-server mariadb105
# 或者安装更新的 10.11 版本
# sudo yum install -y mariadb1011-server mariadb1011提示:AL2023 的软件包名与 CentOS 不同,直接使用
mariadb-server而非mariadb105-server

2.3 验证安装
# 查看版本
mysql --version
# 输出:mysql Ver 15.1 Distrib 10.5.25-MariaDB, for Linux (x86_64)
# 查看安装路径
which mariadb
# 输出:/usr/bin/mariadb
三、启动与基础配置
3.1 启动服务
# 启动 MariaDB
sudo systemctl start mariadb
# 设置开机自启
sudo systemctl enable mariadb
# 查看状态
sudo systemctl status mariadb
3.2 运行安全脚本
sudo mysql_secure_installation按提示操作:
Enter current password for root: [直接回车,首次安装无密码]
Switch to unix_socket authentication [Y/n] Y # 使用系统认证
Set root password? [Y/n] Y # 设置 root 密码
New password: [输入强密码]
Re-enter new password: [确认密码]
Remove anonymous users? [Y/n] Y # 删除匿名用户
Disallow root login remotely? [Y/n] Y # 禁止 root 远程登录--(推荐禁止,根据业务需求)
Remove test database? [Y/n] Y # 删除测试库
Reload privilege tables? [Y/n] Y # 刷新权限

四、远程访问配置(可选)
4.1 修改绑定地址
# 编辑配置文件
sudo vim /etc/my.cnf.d/mariadb-server.cnf找到 [mysqld] 部分,修改:
[mysqld]
# 允许所有接口连接(默认是 127.0.0.1)
bind-address = 0.0.0.0
# 或指定私有 IP
# bind-address = 172.31.XX.XX4.2 创建远程访问用户
# 登录 MariaDB
sudo mysql -u root -p
# 创建新用户(推荐替代 root 远程登录)
CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
4.3 配置 AWS 安全组
进入 EC2 控制台 → 安全组
编辑入站规则,添加:
类型:MySQL/Aurora
端口:3306
源:你的本地 IP 或特定安全组(不推荐开放 0.0.0.0/0)
4.4 重启服务
sudo systemctl restart mariadb五、性能优化(生产环境)
5.1 编辑配置文件
sudo vim /etc/my.cnf.d/mariadb-server.cnf根据实例规格调整(以 t3.medium 2核4G 为例):
[mysqld]
# 基础设置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# InnoDB 优化
innodb_buffer_pool_size = 2G # 物理内存的 50-70%
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
# 连接优化
max_connections = 200
wait_timeout = 600
interactive_timeout = 600
# 查询缓存(MariaDB 10.5 仍支持)
query_cache_type = 1
query_cache_size = 64M
# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 日志(用于慢查询分析)
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 25.2 重启并验证
sudo systemctl restart mariadb
# 查看当前配置
mysql -u root -p -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"六、备份与恢复
6.1 自动备份脚本
创建备份脚本:
sudo vim /opt/backup-mariadb.sh#!/bin/bash
# 配置
BACKUP_DIR="/backup/mariadb"
DATE=$(date +%Y%m%d_%H%M%S)
DB_USER="root"
DB_PASS="your_root_password"
# 创建目录
mkdir -p $BACKUP_DIR
# 备份所有数据库
mysqldump -u$DB_USER -p$DB_PASS --all-databases --single-transaction | gzip > $BACKUP_DIR/full_backup_$DATE.sql.gz
# 保留最近 7 天备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
echo "Backup completed: full_backup_$DATE.sql.gz"添加执行权限和定时任务:
sudo chmod +x /opt/backup-mariadb.sh
# 添加 crontab(每天凌晨 2 点备份)
sudo crontab -e
0 2 * * * /opt/backup-mariadb.sh >> /var/log/mariadb-backup.log 2>&1七、常见问题排查
7.1 无法启动服务
# 查看详细错误
sudo journalctl -u mariadb -xe
# 检查数据目录权限
sudo ls -la /var/lib/mysql/
sudo chown -R mysql:mysql /var/lib/mysql/7.2 远程连接失败
# 检查监听端口
sudo ss -tlnp | grep 3306
# 检查 SELinux(AL2023 默认启用)
sudo getenforce
sudo setsebool -P mysql_connect_any on
# 检查防火墙
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload7.3 内存不足
对于 t3.micro 等低内存实例:
# /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
innodb_buffer_pool_size = 256M
max_connections = 50
performance_schema = off # 关闭性能监控节省内存八、总结
Amazon Linux 2023 的 MariaDB 安装相比 CentOS 更加简洁,通过 DNF 模块可以轻松管理版本。对于 AWS 环境,建议结合 RDS 评估是否需要自建数据库——生产环境推荐使用 Amazon RDS for MariaDB,省去运维负担。
参考链接:
本文首发于个人技术博客,转载请注明出处。