前言

在后端开发中,MySQL + Redis 是最经典、使用率最高的数据库组合。MySQL 负责数据持久化存储,Redis 承担热点数据缓存,极大提升项目接口响应速度。很多新手在服务器部署环境时,经常遇到软件安装失败、无法远程连接、命令遗忘、配置出错等问题。今天这篇博客,手把手带大家在 Linux 服务器下完成 MySQL、Redis 的安装、配置、开机自启、基础命令操作,附带生产常用场景,开箱即用。

一、环境前置说明

  • 适用系统:CentOS 7/8、Ubuntu 20.04+
  • 软件版本:MySQL8.0(稳定生产版)、Redis7.0
  • 权限要求:服务器 root 或 sudo 管理员权限

二、MySQL 安装、配置与基础操作

MySQL 是开源关系型数据库,支持事务、索引、外键,数据持久化落地,是后端项目核心存储组件。

在这里插入图片描述

2.1 CentOS 安装 MySQL8.0(CentOS用户使用)

依次执行以下命令,全程复制即可:

# 下载mysql官方源
wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm

# 安装软件源
rpm -ivh mysql80-community-release-el8-3.noarch.rpm

# 安装mysql服务
yum install -y mysql-community-server

# 启动服务 & 设置开机自启
systemctl start mysqld
systemctl enable mysqld

2.2 Ubuntu 安装 MySQL8.0

# 更新软件源
apt update
# 安装mysql
apt install -y mysql-server
# 启动并开机自启
systemctl start mysql
systemctl enable mysql

检查mysql状态:

  • 检查mysql服务状态
  • 检查mysql是否安装
  • 检查3306端口是否在监听
  • 检查是否有mysql进程在运行
  • 检查系统是否安装过mysql包
# 1. 检查 MySQL 服务状态
systemctl status mysql

# 2. 检查 MySQL 是否安装
which mysql
mysql --version

# 3. 检查 3306 端口是否在监听
ss -tlnp | grep 3306
# 或者
netstat -tlnp 2>/dev/null | grep 3306

# 4. 检查是否有 MySQL 进程在运行
ps aux | grep mysql | grep -v grep

# 5. 检查系统是否安装过 MySQL 包(Ubuntu/Debian)
dpkg -l | grep -i mysql

2.3 MySQL 初始化配置(重点区分系统)

关键区别

  • CentOS MySQL:安装后自动生成临时密码,存放在日志文件

  • Ubuntu MySQL:默认无密码、无日志密码,必须本地免密登录改密码

CentOS 初始化方式
# 查看临时密码
grep 'temporary password' /var/log/mysqld.log

# 登录数据库
mysql -uroot -p
Ubuntu 初始化方式

Ubuntu 安装 MySQL 后无法直接 mysql -uroot -p 登录,必须先免密登录修改密码:

# Ubuntu 专属:免密登录mysql
sudo mysql

进入数据库后执行以下 SQL 修改登录密码(自定义密码):

# Ubuntu专用改密码语句
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
exit;

退出后即可使用标准命令登录:

退出后必须执行 Ubuntu socket 永久修复全套命令(含重启MySQL),修复完毕后可直接使用标准登录命令:

mysql -uroot -p
# 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '自定义密码';

# 刷新权限
FLUSH PRIVILEGES;

2.4 开启远程连接(开发必备)

默认 root 用户仅支持本地登录,需要配置远程访问:

# 创建远程用户
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';

# 赋予全部权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

# 刷新权限
FLUSH PRIVILEGES;

2.5 MySQL 核心基础命令

1、数据库操作
-- 查看所有数据库
SHOW DATABASES;
-- 创建数据库,指定utf8mb4完整编码
CREATE DATABASE test_db CHARACTER SET utf8mb4;
-- 切换数据库
USE test_db;
-- 删除数据库
DROP DATABASE test_db;
2、数据表操作
-- 创建用户表
CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL COMMENT '用户名',
    age INT COMMENT '年龄',
    create_time DATETIME DEFAULT NOW() COMMENT '创建时间'
);
-- 查看所有表
SHOW TABLES;
-- 查看表结构
DESC user;
-- 删除数据表
DROP TABLE user;
3、数据 CRUD 增删改查
-- 新增数据
INSERT INTO user(name, age) VALUES('张三', 20), ('李四', 22);
-- 查询全部数据
SELECT * FROM user;
-- 条件查询
SELECT name,age FROM user WHERE age > 20;
-- 修改数据
UPDATE user SET age=21 WHERE name='张三';
-- 删除数据
DELETE FROM user WHERE name='李四';

2.6 MySQL 服务启停命令(分系统)

CentOS 系统
systemctl start mysqld    # 启动
systemctl stop mysqld     # 停止
systemctl restart mysqld  # 重启
systemctl status mysqld   # 查看运行状态
Ubuntu 系统
systemctl start mysql    # 启动
systemctl stop mysql     # 停止
systemctl restart mysql  # 重启
systemctl status mysql   # 查看运行状态
systemctl enable mysql   # 开机自启

2.7 常见报错解决

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

因为 Anaconda 自带的 MySQL 客户端(/root/anaconda3/bin/mysql)默认查找 socket 文件在 /tmp/mysql.sock,但系统安装的 MySQL Server 的 socket 文件实际在 /var/run/mysqld/mysqld.sock。

# 1. 建立socket软链接,兼容标准登录命令
ln -s /run/mysqld/mysqld.sock /tmp/mysql.sock

# 2. 授权目录权限,防止链接失效
chmod 755 /run/mysqld/

# 3. 【最关键】重启MySQL服务使配置生效(必不可少)
systemctl restart mysql

# 修复完成!直接使用标准命令登录
mysql -uroot -p

三、Redis 安装、配置与基础操作

Redis 是高性能内存型 NoSQL 数据库,读写速度极高,常用于接口缓存、分布式锁、限流、会话存储、排行榜等场景。

3.1 Linux 源码安装 Redis7.0

检查redis的状态:

  • 检查redis的服务状态
  • 检查是否安装了redis
  • 检查6379端口
  • 检查redis进程
  • 检查系统包管理器
# 1. 检查 Redis 服务状态
systemctl status redis-server 2>/dev/null || systemctl status redis 2>/dev/null || echo "Redis 服务未找到"

# 2. 检查是否安装了 Redis
which redis-server
redis-server --version 2>/dev/null || redis-cli --version 2>/dev/null

# 3. 检查 6379 端口
ss -tlnp | grep 6379

# 4. 检查 Redis 进程
ps aux | grep redis-server | grep -v grep

# 5. 检查系统包管理器
dpkg -l | grep -i redis

Redis 安装:

# Ubuntu安装依赖(默认使用此条)
apt install -y gcc wget

# CentOS安装依赖
# yum install -y gcc wget

# 下载源码包
wget https://download.redis.io/releases/redis-7.0.10.tar.gz

# 解压
tar -zxvf redis-7.0.10.tar.gz
cd redis-7.0.10

# 编译 & 安装
make
make install PREFIX=/usr/local/redis

# 拷贝配置文件
cp redis.conf /usr/local/redis/bin/
cd /usr/local/redis/bin

3.2 Redis 核心配置修改

编辑配置文件,适配开发环境,支持远程连接、后台启动、密码保护:

vi redis.conf

修改以下配置:

# 1. 注释本地绑定,允许所有IP连接
# bind 127.0.0.1

# 2. 关闭保护模式
protected-mode no

# 3. 设置连接密码
requirepass 123456

# 4. 后台进程启动
daemonize yes

保存退出,启动 Redis:

./redis-server redis.conf

3.3 Redis 连接命令

# 本地无密码连接
./redis-cli

# 带密码连接
./redis-cli -a 123456

# 远程服务器连接
./redis-cli -h 服务器IP -p 6379 -a 密码

3.4 五大常用数据类型实操

1、String 字符串(最常用)
SET username admin      # 设置键值
GET username            # 获取值
SETEX token 3600 123456 # 设置过期时间(秒)
DEL username            # 删除key
2、Hash 哈希(存储对象)
HSET user:1 name 张三 age 20
HGET user:1 name
HGETALL user:1
3、List 列表(有序可重复)
LPUSH list a b c
RPUSH list d
LRANGE list 0 -1
4、Set 集合(无序不可重复)
SADD tag java python
SMEMBERS tag
5、ZSet 有序集合(排行榜专用)
ZADD rank 99 小明
ZADD rank 95 小红
ZRANGE rank 0 -1

3.5 Redis 启停运维命令

# 优雅关闭redis
./redis-cli -a 123456 shutdown

# 强制结束进程
ps -ef | grep redis
kill -9 进程ID

# 重启redis
./redis-server redis.conf

四、MySQL + Redis 经典业务架构

在实际项目中,两者不会单独使用,而是缓存+持久化搭配使用,解决数据库查询压力大、接口卡顿问题。

执行流程:

  1. 用户发起查询请求

  2. 程序优先查询 Redis 缓存数据

  3. 缓存命中:直接返回数据,无需查询数据库

  4. 缓存未命中:查询 MySQL 持久化数据

  5. 将查询到的数据写入 Redis,设置过期时间

  6. 返回数据给用户

简单伪代码演示:

def getUserInfo(userId):
    # 1. 查询缓存
    user = redis.get(f"user:{userId}")
    if user:
        return user
    # 2. 查询数据库
    user = mysql.query("select * from user where id = ?",userId)
    # 3. 写入缓存,过期1小时
    redis.setex(f"user:{userId}",3600,user)
    return user

五、服务器部署避坑指南

  • MySQL:禁止生产环境 root 用户公网裸奔,务必设置强密码,按需开放远程权限

  • Redis:绝对不能无密码暴露公网,极易被挖矿脚本入侵,必须配置密码+关闭保护模式

  • 服务器防火墙需要放行 3306(MySQL)6379(Redis) 端口,否则外部无法连接

  • 缓存必须设置过期时间,避免 Redis 数据常驻内存、数据与数据库不一致

六、总结

1、MySQL:关系型数据库,主打数据持久化、事务安全,是项目数据底座;

2、Redis:内存数据库,主打高性能读写,用于缓存、限流、分布式锁等场景;

3、二者组合是后端开发标准架构,既能保证数据安全持久化,又能大幅提升项目性能;

4、本文所有命令可直接复制部署,适合服务器环境搭建、新手学习、项目上线部署。


总结

太喜欢烟花啦,虽然转瞬即逝!

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐