文章目录
[1. 安装 mysql](#1. 安装 mysql)
[2. 安全配置(必做)](#2. 安全配置(必做))
[3. 基础操作](#3. 基础操作)
[(1)登录 mysql](#(1)登录 mysql)
[4. 远程访问配置(可选)](#4. 远程访问配置(可选))
[1. 安装 mongodb(社区版)](#1. 安装 mongodb(社区版))
[2. 基础操作(使用 mongo 命令行)](#2. 基础操作(使用 mongo 命令行))
[3. 安全配置(添加密码)](#3. 安全配置(添加密码))
[1. 安装 redis](#1. 安装 redis)
[2. 配置优化(基础)](#2. 配置优化(基础))
[3. 基础操作(使用 redis-cli 命令行)](#3. 基础操作(使用 redis-cli 命令行))
[(1)登录 redis](#(1)登录 redis)
[4. 常见场景示例:缓存 mysql 数据](#4. 常见场景示例:缓存 mysql 数据)
[mysql 远程连接失败:](#mysql 远程连接失败:)
[mongodb 启动失败:](#mongodb 启动失败:)
[redis 无法远程访问:](#redis 无法远程访问:)
前言
在后端开发与数据存储场景中,mysql(关系型数据库)、mongodb(文档型非关系数据库)、redis(内存型缓存数据库)是最常用的三大工具(三大数据库之前的文章有详讲)。本文将以 ubuntu 22.04 lts(之前的文章有讲解如何安装) 系统为例,详细讲解三者的安装配置、基础操作及常见问题解决,适合新手快速入门。
一、mysql:稳定可靠的关系型数据库
mysql 凭借成熟的事务支持、结构化查询能力,广泛用于电商、政务等需要强数据一致性的场景。
1. 安装 mysql
ubuntu 官方源已包含 mysql,直接通过 apt
安装即可:
bash
# 更新软件源
sudo apt update
# 安装 mysql 服务器(自动创建系统服务)(-y 作用是在安装过程中需要输入yes时,会自动输入)
sudo apt install -y mysql-server
# 验证安装:查看服务状态(active (running) 表示正常)
sudo systemctl status mysql
2. 安全配置(必做)
默认安装后 mysql 安全性较低,需通过官方脚本优化:
bash
sudo mysql_secure_installation
按照提示完成以下操作:
设置 root 密码(推荐使用强密码:字母 + 数字 + 特殊符号);
移除匿名用户(防止未授权访问);
禁止 root 远程登录(默认仅允许本地访问,如需远程可后续配置);
删除 test 数据库(避免测试数据泄露);
刷新权限表(使配置生效)。
3. 基础操作
(1)登录 mysql
本地登录(root 用户默认使用 auth_socket
认证,需通过 sudo
登录):
bash
sudo mysql -u root -p
# 输入步骤 2 中设置的 root 密码,回车后进入 mysql 命令行
(2)核心命令示例
sql
-- 1. 创建数据库(例如创建名为 test_db 的数据库)
create database if not exists test_db default charset utf8mb4;
-- 2. 创建用户并授权(例如创建 user1,允许本地访问 test_db)
create user if not exists 'user1'@'localhost' identified by 'user1@2025';
grant all privileges on test_db.* to 'user1'@'localhost';
flush privileges; -- 刷新权限
-- 3. 使用数据库
use test_db;
-- 4. 创建表(例如创建用户表 user_info)
create table if not exists user_info (
id int primary key auto_increment,
username varchar(50) not null unique,
age int,
create_time datetime default current_timestamp
);
-- 5. 插入数据
insert into user_info (username, age) values ('zhangsan', 25), ('lisi', 30);
-- 6. 查询数据
select * from user_info;
-- 7. 退出 mysql 命令行
exit;
4. 远程访问配置(可选)
若需在其他设备访问 ubuntu 上的 mysql,需修改两处配置:
-
修改 mysql 配置文件:
bashsudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
将
bind-address = 127.0.0.1
改为bind-address = 0.0.0.0
(允许所有 ip 访问),保存后重启服务:bashsudo systemctl restart mysql
-
授权远程用户 :
登录 mysql 后,授权用户允许远程访问(例如允许 user1 从任意 ip 访问):
sqlgrant all privileges on test_db.* to 'user1'@'%' identified by 'user1@2025'; flush privileges;
-
开放 ubuntu 防火墙端口:
bashsudo ufw allow 3306/tcp --permanent # 3306 是 mysql 默认端口 sudo ufw reload
二、mongodb:灵活高效的文档型数据库
mongodb 以 json 格式的文档存储数据,无需预先定义表结构,适合社交、日志等数据结构多变的场景。
1. 安装 mongodb(社区版)
ubuntu 官方源的 mongodb 版本较旧,推荐使用官方源安装:
bash
# 1. 导入 mongodb 公钥
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -
# 2. 添加 mongodb 官方源(ubuntu 22.04 对应 jammy)
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
# 3. 更新源并安装
sudo apt update
sudo apt install -y mongodb-org
# 4. 启动服务并设置开机自启
sudo systemctl start mongod
sudo systemctl enable mongod
# 5. 验证安装(出现 "ok" : 1 表示正常)
mongo --eval "db.runCommand({ connectionStatus: 1 })"
2. 基础操作(使用 mongo 命令行)
mongodb 无需提前创建数据库(首次插入数据时自动创建),核心操作如下:
(1)登录与切换数据库
bash
# 本地登录(默认无密码,直接进入命令行)
mongo
# 切换到目标数据库(例如切换到 test_db,不存在则自动创建)
use test_db
(2)核心命令示例
javascript
// 1. 插入文档(集合 collection 类似 mysql 的表,自动创建)
db.user_info.insertmany([
{ username: "wangwu", age: 28, hobbies: ["reading", "hiking"] },
{ username: "zhaoliu", age: 32, address: { city: "beijing", street: "main st" } }
]);
// 2. 查询文档(查询所有数据)
db.user_info.find();
// 条件查询(查询 age > 30 的数据,格式化输出)
db.user_info.find({ age: { $gt: 30 } }).pretty();
// 3. 更新文档(将 wangwu 的 age 改为 29)
db.user_info.updateone(
{ username: "wangwu" },
{ $set: { age: 29 } }
);
// 4. 删除文档(删除 username 为 zhaoliu 的数据)
db.user_info.deleteone({ username: "zhaoliu" });
// 5. 查看集合列表
show collections;
// 6. 退出命令行
exit;
3. 安全配置(添加密码)
默认 mongodb 无认证,需手动启用:
-
创建管理员用户:
bashmongo use admin # 切换到系统数据库 # 创建 root 管理员 db.createuser({ user: "root", pwd: "mongoroot@2025", roles: [{ role: "root", db: "admin" }] }); exit;
-
启用认证:
bashsudo nano /etc/mongod.conf
在
security
模块下添加authorization: enabled
:security: authorization: enabled
保存后重启服务:
bashsudo systemctl restart mongod
-
带密码登录:
bash# 方式 1:登录时指定密码 mongo -u root -p mongoroot@2025 --authenticationdatabase admin # 方式 2:先登录再认证 mongo use admin db.auth("root", "mongoroot@2025"); # 返回 1 表示认证成功
三、redis:高性能的内存型缓存数据库
redis 基于内存存储,读写速度极快,常用于会话存储、计数器、缓存热点数据等场景,支持字符串、哈希、列表等多种数据结构。
1. 安装 redis
ubuntu 官方源的 redis 版本较新,直接安装:
bash
# 1. 安装 redis
sudo apt update
sudo apt install -y redis-server
# 2. 启动服务并设置开机自启
sudo systemctl start redis-server
sudo systemctl enable redis-server
# 3. 验证安装(出现 pong 表示正常)
redis-cli ping
2. 配置优化(基础)
默认配置文件路径为 /etc/redis/redis.conf
,推荐修改以下配置:
bash
sudo nano /etc/redis/redis.conf
- 设置密码 :找到
# requirepass foobared
,改为requirepass redispass@2025
(替换为你的密码); - 允许远程访问 :找到
bind 127.0.0.1 ::1
,改为bind 0.0.0.0
(如需远程访问); - 启用持久化 :默认已启用 rdb 持久化(
save 900 1
表示 900 秒内有 1 次修改则保存到磁盘),无需额外配置。
修改后重启服务:
bash
sudo systemctl restart redis-server
3. 基础操作(使用 redis-cli 命令行)
(1)登录 redis
bash
# 本地登录(无密码时直接 redis-cli)
redis-cli -a redispass@2025
# 或先登录再认证
redis-cli
auth redispass@2025 # 返回 ok 表示认证成功
(2)核心命令示例(支持多种数据结构)
bash
# 1. 字符串(string):存储键值对
set username "zhangsan" # 设置键 username 的值为 zhangsan
get username # 获取键 username 的值(返回 "zhangsan")
expire username 300 # 设置键 username 300 秒后过期
# 2. 哈希(hash):存储对象
hset user:1 name "lisi" age 30 # 创建用户 1 的信息
hgetall user:1 # 获取用户 1 的所有字段(返回 name、age 及对应值)
hget user:1 age # 获取用户 1 的 age 字段(返回 "30")
# 3. 列表(list):有序集合,支持两端操作
lpush fruits "apple" "banana" # 从左侧插入元素
lrange fruits 0 -1 # 获取所有元素(返回 ["banana", "apple"])
rpop fruits # 从右侧删除元素(返回 "apple")
# 4. 查看所有键
keys *
# 5. 退出命令行
exit
4. 常见场景示例:缓存 mysql 数据
假设 mysql 中有 user_info
表,可通过 redis 缓存热点用户数据,减少 mysql 压力:
bash
# 1. 从 mysql 查询用户数据(假设用户 id=1 的数据)
# 2. 将数据存入 redis 哈希
redis-cli -a redispass@2025 hset user:1 username "zhangsan" age 25
# 3. 设置 10 分钟过期(600 秒)
redis-cli -a redispass@2025 expire user:1 600
# 4. 后续查询直接从 redis 获取,过期后再从 mysql 更新
四、三大数据库对比与适用场景
特性 | mysql | mongodb | redis |
---|---|---|---|
数据库类型 | 关系型 | 文档型非关系型 | 内存型缓存 / 数据库 |
数据存储格式 | 结构化表(行 / 列) | json 文档 | 键值对(多数据结构) |
事务支持 | 完全支持(acid) | 部分支持(4.0+ 事务) | 支持单命令事务 |
读写性能 | 中(磁盘 io) | 高(内存 + 磁盘) | 极高(纯内存) |
适用场景 | 订单、用户信息等结构化数据 | 日志、社交动态等非结构化数据 | 缓存、计数器、会话存储 |
五、常见问题排查
mysql 远程连接失败:
- 检查
mysqld.cnf
中bind-address
是否为0.0.0.0
; - 检查用户授权是否允许远程 ip(
%
表示所有 ip); - 检查 ubuntu 防火墙是否开放 3306 端口(
sudo ufw status
查看)。
mongodb 启动失败:
- 查看日志:
sudo journalctl -u mongod
,常见原因是权限不足(需确保/var/lib/mongodb
目录属主为mongodb
); - 若修改配置后失败,检查配置文件语法(yaml 格式严格,缩进需为 2 空格)。
redis 无法远程访问:
- 检查
redis.conf
中bind
配置和密码; - 开放 6379 端口:
sudo ufw allow 6379/tcp --permanent && sudo ufw reload
。
总结
本文覆盖了 ubuntu 系统下 mysql、mongodb、redis 的核心使用流程。实际开发中,三者常配合使用(例如 redis 缓存 + mysql 存储核心数据 + mongodb 存储非结构化日志),建议根据业务场景选择合适的工具,并深入学习其高级特性(如 mysql 索引优化、mongodb 聚合查询、redis 集群)。一步一个脚印!!!!