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这个交互式脚本会引导你完成以下安全设置:
- 设置 root 密码
- 移除匿名用户
- 禁止 root 远程登录
- 删除 test 测试数据库
- 重新加载权限表
⚠️ 生产环境一定要执行此步骤!默认安装的 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).sql6. 配置文件调优
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 = 2sudo 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 mariadbQ:远程连接不上 MariaDB?
检查两步:1)/etc/my.cnf 中 bind-address 是否设为 0.0.0.0;2)防火墙是否放行了 3306 端口。
掌握了这些,你已经可以用 MariaDB 搭建博客、应用等需要的数据库了。
评论 (0)