Ubuntu操作系统下使用mysql、mongodb、redis

文章目录

前言

一、mysql:稳定可靠的关系型数据库

[1. 安装 mysql](#1. 安装 mysql)

[2. 安全配置(必做)](#2. 安全配置(必做))

[3. 基础操作](#3. 基础操作)

[(1)登录 mysql](#(1)登录 mysql)

(2)核心命令示例

[4. 远程访问配置(可选)](#4. 远程访问配置(可选))

二、mongodb:灵活高效的文档型数据库

[1. 安装 mongodb(社区版)](#1. 安装 mongodb(社区版))

[2. 基础操作(使用 mongo 命令行)](#2. 基础操作(使用 mongo 命令行))

(1)登录与切换数据库

(2)核心命令示例

[3. 安全配置(添加密码)](#3. 安全配置(添加密码))

三、redis:高性能的内存型缓存数据库

[1. 安装 redis](#1. 安装 redis)

[2. 配置优化(基础)](#2. 配置优化(基础))

[3. 基础操作(使用 redis-cli 命令行)](#3. 基础操作(使用 redis-cli 命令行))

[(1)登录 redis](#(1)登录 redis)

(2)核心命令示例(支持多种数据结构)

[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,需修改两处配置:

  1. 修改 mysql 配置文件

    bash 复制代码
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

    bind-address = 127.0.0.1 改为 bind-address = 0.0.0.0(允许所有 ip 访问),保存后重启服务:

    bash 复制代码
    sudo systemctl restart mysql
  2. 授权远程用户

    登录 mysql 后,授权用户允许远程访问(例如允许 user1 从任意 ip 访问):

    sql 复制代码
    grant all privileges on test_db.* to 'user1'@'%' identified by 'user1@2025';
    flush privileges;
  3. 开放 ubuntu 防火墙端口

    bash 复制代码
    sudo 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 无认证,需手动启用:

  1. 创建管理员用户

    bash 复制代码
    mongo
    use admin # 切换到系统数据库
    # 创建 root 管理员
    db.createuser({
      user: "root",
      pwd: "mongoroot@2025",
      roles: [{ role: "root", db: "admin" }]
    });
    exit;
  2. 启用认证

    bash 复制代码
    sudo nano /etc/mongod.conf

    security 模块下添加 authorization: enabled

    复制代码
    security:
      authorization: enabled

    保存后重启服务:

    bash 复制代码
    sudo systemctl restart mongod
  3. 带密码登录

    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
  1. 设置密码 :找到 # requirepass foobared,改为 requirepass redispass@2025(替换为你的密码);
  2. 允许远程访问 :找到 bind 127.0.0.1 ::1,改为 bind 0.0.0.0(如需远程访问);
  3. 启用持久化 :默认已启用 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.cnfbind-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.confbind 配置和密码;
  • 开放 6379 端口:sudo ufw allow 6379/tcp --permanent && sudo ufw reload

总结

本文覆盖了 ubuntu 系统下 mysql、mongodb、redis 的核心使用流程。实际开发中,三者常配合使用(例如 redis 缓存 + mysql 存储核心数据 + mongodb 存储非结构化日志),建议根据业务场景选择合适的工具,并深入学习其高级特性(如 mysql 索引优化、mongodb 聚合查询、redis 集群)。一步一个脚印!!!!


相关推荐
她说人狗殊途3 小时前
[特殊字符] MySQL性能参数查询总结
数据库·mysql
灵犀物润3 小时前
MySQL 8 与 PostgreSQL 17 对比分析及迁移指南
数据库·mysql·postgresql
二闹3 小时前
别再傻傻分不清!MyBatis两种分页方式到底用哪个?
后端·mysql
tan_jianhui4 小时前
在Ubuntu中安装配置MySql Server
linux·ubuntu·adb
跑跑快跑5 小时前
Macbook安装MySQL报错
数据库·mysql
小鸡脚来咯7 小时前
mysql mvcc机制详解
数据库·mysql
计算机学姐8 小时前
基于SpringBoot的老年人健康数据远程监控管理系统【2026最新】
java·vue.js·spring boot·后端·mysql·spring·mybatis
夏天的味道٥9 小时前
MySQL explain命令的作用
android·mysql·adb