目录
本文将为您提供在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搭建完整的监控体系
希望本文对您的学习和开发工作有所帮助!如有任何问题,欢迎在评论区留言讨论。