目录
[二、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 各数据库安全建议)
[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会根据业务需求同时使用多种数据库,发挥各自优势,构建健壮的应用架构。
下一步建议:
-
深入学习每种数据库的高级特性和最佳实践
-
探索主从复制、集群部署等高可用方案
-
制定定期备份和灾难恢复计划
-
使用Prometheus+Grafana搭建完整的监控体系
希望本文对您的学习和开发工作有所帮助!如有任何问题,欢迎在评论区留言讨论。