【Ubuntu系统实战】一站式部署与管理MySQL、MongoDB、Redis三大数据库

目录

前言

一、环境准备与系统优化

[二、MySQL 8.0 部署与配置](#二、MySQL 8.0 部署与配置)

[2.1 安装MySQL服务器](#2.1 安装MySQL服务器)

[2.2 安全配置与初始化](#2.2 安全配置与初始化)

[2.3 创建专用数据库用户](#2.3 创建专用数据库用户)

[2.4 配置远程访问(谨慎操作)](#2.4 配置远程访问(谨慎操作))

[三、MongoDB 6.0 部署与配置](#三、MongoDB 6.0 部署与配置)

[3.1 安装MongoDB社区版](#3.1 安装MongoDB社区版)

[3.2 验证安装与基本操作](#3.2 验证安装与基本操作)

[3.3 启用身份验证](#3.3 启用身份验证)

[四、Redis 7.0 部署与配置](#四、Redis 7.0 部署与配置)

[4.1 安装Redis服务器](#4.1 安装Redis服务器)

[4.2 基本配置与优化](#4.2 基本配置与优化)

[4.3 Redis基本操作](#4.3 Redis基本操作)

五、安全加固与防火墙配置

[5.1 配置UFW防火墙](#5.1 配置UFW防火墙)

[5.2 各数据库安全建议](#5.2 各数据库安全建议)

六、常用管理命令汇总

MySQL管理命令:

MongoDB管理命令:

Redis管理命令:

七、性能监控与优化

[7.1 安装监控工具](#7.1 安装监控工具)

[7.2 各数据库性能优化建议](#7.2 各数据库性能优化建议)

结语


本文将为您提供在Ubuntu操作系统下安装、配置、管理MySQL、MongoDB和Redis的完整指南,涵盖安全加固、基本操作和性能优化,助您快速搭建高效的开发环境。

前言

在当今的软件开发中,数据库是任何应用程序的核心组件。无论是传统的关系型数据(MySQL)、灵活的文档存储(MongoDB)还是高性能的内存缓存(Redis),掌握它们的部署与管理是每位开发者的必备技能。本文将带领大家在Ubuntu 20.04/22.04 LTS系统上,一站式完成这三种主流数据库的环境搭建。


一、环境准备与系统优化

在开始安装前,我们先对系统进行基础配置。

bash

复制代码
# 1. 更新系统软件包列表
sudo apt update && sudo apt upgrade -y

# 2. 安装常用工具
sudo apt install -y vim curl wget gnupg software-properties-common

# 3. 设置时区(可选)
sudo timedatectl set-timezone Asia/Shanghai

# 4. 关闭swap(提升数据库性能)
sudo swapoff -a
sudo sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

二、MySQL 8.0 部署与配置

2.1 安装MySQL服务器

bash

复制代码
# 添加MySQL官方APT仓库
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
sudo apt update

# 安装MySQL服务器
sudo apt install -y mysql-server

# 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql

2.2 安全配置与初始化

bash

复制代码
# 运行安全安装脚本
sudo mysql_secure_installation

# 根据提示完成以下设置:
# - 设置root密码
# - 移除匿名用户
# - 禁止root远程登录
# - 移除测试数据库
# - 重新加载权限表

2.3 创建专用数据库用户

mysql

复制代码
-- 登录MySQL
sudo mysql -u root -p

-- 创建新用户并授权
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
CREATE DATABASE mydatabase;
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

2.4 配置远程访问(谨慎操作)

bash

复制代码
# 编辑MySQL配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

# 将bind-address修改为:
bind-address = 0.0.0.0

mysql

复制代码
-- 创建远程访问用户(限制IP更安全)
CREATE USER 'remoteuser'@'192.168.1.%' IDENTIFIED BY 'RemotePass123!';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'remoteuser'@'192.168.1.%';

bash

复制代码
# 重启MySQL服务
sudo systemctl restart mysql

三、MongoDB 6.0 部署与配置

3.1 安装MongoDB社区版

bash

复制代码
# 导入MongoDB GPG密钥
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

# 添加MongoDB仓库
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

sudo apt update
sudo apt install -y mongodb-org

# 启动MongoDB服务
sudo systemctl start mongod
sudo systemctl enable mongod

3.2 验证安装与基本操作

bash

复制代码
# 检查服务状态
sudo systemctl status mongod

# 连接MongoDB shell
mongosh

javascript

复制代码
// MongoDB基本操作
use mydatabase

// 插入文档
db.users.insertOne({
  name: "张三",
  age: 28,
  email: "zhangsan@example.com",
  created_at: new Date()
})

// 查询文档
db.users.find()
db.users.find({ age: { $gt: 25 } })

// 创建索引
db.users.createIndex({ email: 1 }, { unique: true })

3.3 启用身份验证

javascript

复制代码
// 在mongosh中创建管理员用户
use admin
db.createUser({
  user: "admin",
  pwd: "AdminPassword123!",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

// 启用认证后重新登录
db.auth("admin", "AdminPassword123!")

bash

复制代码
# 启用认证后编辑配置文件
sudo vim /etc/mongod.conf

# 取消注释security部分并添加:
security:
  authorization: enabled

bash

复制代码
# 重启MongoDB
sudo systemctl restart mongod

四、Redis 7.0 部署与配置

4.1 安装Redis服务器

bash

复制代码
# 添加Redis官方仓库
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt update
sudo apt install -y redis

# 启动Redis服务
sudo systemctl start redis-server
sudo systemctl enable redis-server

4.2 基本配置与优化

bash

复制代码
# 编辑Redis配置文件
sudo vim /etc/redis/redis.conf

重要配置项修改:

config

复制代码
# 绑定地址(允许远程访问时修改)
bind 0.0.0.0

# 启用认证
requirepass YourStrongRedisPassword123!

# 最大内存限制
maxmemory 2gb
maxmemory-policy allkeys-lru

# 启用AOF持久化
appendonly yes

bash

复制代码
# 重启Redis服务
sudo systemctl restart redis-server

4.3 Redis基本操作

bash

复制代码
# 连接Redis CLI
redis-cli

# 认证(如果设置了密码)
AUTH YourStrongRedisPassword123!

redis

复制代码
# 基本命令示例
SET username "john_doe"
GET username

HSET user:1000 name "Alice" age 30 email "alice@example.com"
HGETALL user:1000

SADD tags "python" "database" "redis"
SMEMBERS tags

# 设置过期时间
SETEX session:token 3600 "user_data"
TTL session:token

五、安全加固与防火墙配置

5.1 配置UFW防火墙

bash

复制代码
# 安装UFW
sudo apt install -y ufw

# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 开放必要端口
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw allow 3306/tcp comment 'MySQL'  # 建议仅对特定IP开放
sudo ufw allow 6379/tcp comment 'Redis'  # 建议仅对特定IP开放
sudo ufw allow 27017/tcp comment 'MongoDB' # 建议仅对特定IP开放

# 启用防火墙
sudo ufw enable

5.2 各数据库安全建议

MySQL安全建议:

  • 定期运行mysql_secure_installation

  • 为每个应用创建独立用户和数据库

  • 启用二进制日志用于备份和恢复

MongoDB安全建议:

  • 启用身份验证和授权

  • 配置TLS/SSL加密传输

  • 限制网络暴露范围

Redis安全建议:

  • 务必设置强密码(requirepass)

  • 重命名或禁用危险命令(FLUSHALL、CONFIG)

  • 使用非默认端口


六、常用管理命令汇总

MySQL管理命令:

bash

复制代码
# 服务管理
sudo systemctl status mysql
sudo systemctl restart mysql

# 备份与恢复
mysqldump -u username -p database_name > backup.sql
mysql -u username -p database_name < backup.sql

MongoDB管理命令:

bash

复制代码
# 服务管理
sudo systemctl status mongod
sudo journalctl -u mongod -f  # 查看日志

# 备份与恢复
mongodump --uri="mongodb://username:password@localhost:27017/mydatabase"
mongorestore --uri="mongodb://username:password@localhost:27017/mydatabase" dump/

Redis管理命令:

bash

复制代码
# 服务管理
sudo systemctl status redis-server
redis-cli ping  # 测试连接

# 持久化操作
redis-cli save  # 立即保存RDB
redis-cli bgrewriteaof  # 重写AOF文件

七、性能监控与优化

7.1 安装监控工具

bash

复制代码
# 安装基础监控工具
sudo apt install -y htop iotop nethogs

# 安装数据库专用监控工具
sudo apt install -y mytop mongotop redis-tools

7.2 各数据库性能优化建议

MySQL优化:

  • 调整InnoDB缓冲池大小

  • 优化查询语句,添加适当索引

  • 使用连接池管理数据库连接

MongoDB优化:

  • 创建合适的索引覆盖查询

  • 使用投影限制返回字段

  • 分片处理大规模数据集

Redis优化:

  • 合理设置最大内存和淘汰策略

  • 使用管道(pipeline)减少网络往返

  • 考虑使用集群模式分散压力


结语

通过本文的详细指南,您应该已经在Ubuntu系统上成功部署了MySQL、MongoDB和Redis三大数据库,并完成了基本的安全配置。这三种数据库各有其优势和适用场景:

  • MySQL:适合结构化数据、事务处理

  • MongoDB:适合半结构化数据、快速迭代开发

  • Redis:适合缓存、会话存储、实时数据处理

在实际项目开发中, often会根据业务需求同时使用多种数据库,发挥各自优势,构建健壮的应用架构。

下一步建议:

  1. 深入学习每种数据库的高级特性和最佳实践

  2. 探索主从复制、集群部署等高可用方案

  3. 制定定期备份和灾难恢复计划

  4. 使用Prometheus+Grafana搭建完整的监控体系

希望本文对您的学习和开发工作有所帮助!如有任何问题,欢迎在评论区留言讨论。

相关推荐
weixin_45658815几秒前
【java面试day19】mysql-优化
java·mysql·面试
blasit10 分钟前
Ubuntu 20.04.6交叉编译得到Ubuntu 16.04.6的可执行文件
linux·运维·ubuntu
TT哇26 分钟前
@[TOC](MySQL)MySQL经典练习题(详解)
数据库·mysql
Yichen_liuuil42 分钟前
Oracle数据库迁移
数据库·oracle·备份·迁移
小李飞刀李寻欢1 小时前
MongoDB /redis/mysql 界面化的数据查看页面App
redis·mysql·mongodb
Pure_Eyes1 小时前
mysql 执行sql流程概述
数据库·sql·mysql
森之鸟2 小时前
审核问题——鸿蒙审核返回安装失败,可以尝试云调试
服务器·前端·数据库
有技术的小白2 小时前
[特殊字符] 数据库知识点总结(SQL Server 方向)
数据库·sql
jllws12 小时前
数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_索引和视图
数据库·sql
望获linux3 小时前
【实时Linux实战系列】基于实时Linux的音频实时监控系统
大数据·linux·服务器·网络·数据库·操作系统·嵌入式软件