CentOS 8 安装配置 MariaDB 数据库:从安装到备份恢复

CentOS 8 安装配置 MariaDB 数据库:从安装到备份恢复

李忠衍
2025-03-31 / 0 评论 / 204 阅读 / 正在检测是否收录...
MariaDB 是 MySQL 的开源替代品,在 CentOS/RHEL 8 中已取代 MySQL 成为默认数据库。本文详细讲解安装、安全配置、建库建表、备份恢复全流程。

MariaDB vs MySQL

MariaDB 由 MySQL 原班人马开发,完全兼容 MySQL,用法几乎一样。CentOS 8 默认仓库中只有 MariaDB,没有 MySQL。

  • 命令基本一致(mysql 命令依然可用)
  • API 和语法完全兼容
  • 性能优化更激进

1. 安装 MariaDB

sudo dnf install @mariadb -y

@mariadb 是 DNF 的组包名,会安装 MariaDB 服务器、客户端及其他相关工具。

2. 启动服务

sudo systemctl enable --now mariadb

# 查看运行状态
sudo systemctl status mariadb

正常输出应包含 active (running)

3. 安全配置(重要!)

sudo mysql_secure_installation

这个交互式脚本会引导你完成以下安全设置:

  1. 设置 root 密码
  2. 移除匿名用户
  3. 禁止 root 远程登录
  4. 删除 test 测试数据库
  5. 重新加载权限表

⚠️ 生产环境一定要执行此步骤!默认安装的 MariaDB 没有任何密码,存在严重安全风险。

4. 基础操作

登录数据库:

mysql -u root -p

创建数据库和用户:

-- 创建数据库
CREATE DATABASE bytecho_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建用户并授权
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY '***';
GRANT ALL PRIVILEGES ON bytecho_db.* TO 'blog_user'@'localhost';
FLUSH PRIVILEGES;

创建表:

USE bytecho_db;

CREATE TABLE articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    content TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入测试数据
INSERT INTO articles (title, content) VALUES ('Hello World', '这是我的第一篇文章');

查询数据:

SELECT * FROM articles;
SELECT COUNT(*) FROM articles;

5. 数据库备份与恢复

备份(mysqldump):

# 备份单个数据库
mysqldump -u root -p bytecho_db > bytecho_db_backup.sql

# 备份所有数据库
mysqldump -u root -p --all-databases > all_databases.sql

# 仅备份结构(不含数据)
mysqldump -u root -p --no-data bytecho_db > schema.sql

恢复:

# 先创建数据库
mysql -u root -p -e "CREATE DATABASE bytecho_db"

# 导入备份
mysql -u root -p bytecho_db < bytecho_db_backup.sql

定时备份(crontab):

# 每天凌晨2点自动备份
0 2 * * * mysqldump -u root -p'密码' bytecho_db > /backup/db_$(date +\%Y\%m\%d).sql

6. 配置文件调优

MariaDB 配置文件位于 /etc/my.cnf.d/mariadb-server.cnf

常用优化参数:

[mysqld]
max_connections = 200        # 最大连接数(默认151)
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# InnoDB 优化
innodb_buffer_pool_size = 512M   # 缓冲池大小(设为内存的 70%)
innodb_log_file_size = 64M       # 日志文件大小

# 慢查询日志(排查性能问题)
slow_query_log = 1
slow_query_log_file = /var/log/mariadb-slow.log
long_query_time = 2
sudo systemctl restart mariadb

常见问题

Q:忘记 root 密码怎么办?

sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
sudo systemctl restart mariadb

Q:远程连接不上 MariaDB?

检查两步:1)/etc/my.cnfbind-address 是否设为 0.0.0.0;2)防火墙是否放行了 3306 端口。


掌握了这些,你已经可以用 MariaDB 搭建博客、应用等需要的数据库了。

1

评论 (0)

取消