云计算百科
云计算领域专业知识百科平台

MariaDB 进阶(数据表 / 用户 / 备份 / 主从)与 Nginx 服务器入门

MariaDB 进阶(数据表 / 用户 / 备份 / 主从)与 Nginx 服务器入门

本文使用通俗化、体系化的语言讲解MariaDB 进阶与 Nginx 服务器入门的相关知识,每个概念讲清「是什么、为什么、怎么用」,每条命令解释「意图和原因」,并通过对比表格、架构图解、场景标注帮助理解。

📌 标注约定:

  • 【使用频率】真实运维工作中的出现频率:极高 / 高 / 中 / 低
  • ⭐ 重点 🔺 难点(易踩坑) 💡 理解技巧 / 生产经验

🔧 本文统一使用的实验环境:

角色主机名IP 地址用途
通用服务端 server 10.1.8.11 Nginx 等
通用客户端 client 10.1.8.12 访问测试
数据库主库 db1(db1.hero.cloud) 10.1.8.13 MySQL 主
数据库从库 db2(db2.hero.cloud) 10.1.8.14 MySQL 从
  • 域名统一为 hero.cloud;
  • 数据库相关密码统一为 123。

今日内容地图:

篇内容
第一篇 MariaDB 进阶 数据表 CRUD、用户与权限、备份恢复、主从同步、应急
第二篇 Nginx 介绍、部署、配置结构、nginx.conf、虚拟主机

文章目录

  • MariaDB 进阶(数据表 / 用户 / 备份 / 主从)与 Nginx 服务器入门
  • 第一篇 MariaDB 进阶
    • 第 1 章 数据表操作(CRUD)
      • 1.1 环境准备:导入示例库
      • 1.2 查询表
      • 1.3 条件查询(⭐ WHERE)
      • 1.4 聚合函数与分组
      • 1.5 多表查询(🔺 连接)
      • 1.6 建表、插入、更新、删除
    • 第 2 章 管理数据库用户
      • 2.1 账号格式 user@host
      • 2.2 创建用户
      • 2.3 授权 GRANT(⭐ 四级粒度)
      • 2.4 查看 / 回收 / 删除 / 改密码
      • 2.5 常见访问故障
    • 第 3 章 备份和恢复
      • 3.1 ⭐ 逻辑备份 vs 物理备份
      • 3.2 物理备份 / 恢复
      • 3.3 逻辑备份 mysqldump(⭐ 最常用)
    • 第 4 章 主从同步
      • 4.1 ⭐ 同步原理(🔺 核心,务必理解)
      • 4.2 常见架构
      • 4.3 三种复制方式
      • 4.4 主从延迟
      • 4.5 ⭐ 主从同步实践(db1 = 10.1.8.13 主,db2 = 10.1.8.14 从)
      • 4.6 防止数据丢失的关键参数
    • 第 5 章 应急场景(🔺 救命)
      • 5.1 忘记 root 密码
      • 5.2 root 权限被误回收
      • 5.3 root 账号被误删除
  • 第二篇 Nginx 服务器
    • 第 6 章 Nginx 介绍
    • 第 7 章 Nginx 部署
    • 第 8 章 Nginx 配置结构(⭐ 层级化)
    • 第 9 章 nginx.conf 详解要点
    • 第 10 章 配置加载与 location 匹配(🔺)
    • 第 11 章 虚拟主机
      • 11.1 基于域名(⭐ 最常用)
      • 11.2 基于端口
  • 总结篇
    • 一、核心知识链路
    • 二、重点 / 难点 / 频率
    • 三、易错清单
    • 四、面试速记

第一篇 MariaDB 进阶

第 1 章 数据表操作(CRUD)

【使用频率:极高】CRUD = Create 增、Read 查、Update 改、Delete 删,是数据库最核心的日常操作。

1.1 环境准备:导入示例库

# 下载示例 SQL
curl -o inventory.sql -s http://192.168.49.200/class/course-materials/softwares/stage01/inventory.middle.sql
# 建库并导入
mysql -uroot -p123 -e 'create database inventory;'
mysql -uroot -p123 inventory < inventory.sql

原理:mysql 库名 < 文件 表示把 SQL 文件里的语句批量灌进指定库。

1.2 查询表

① 表列表:

USE inventory;
SHOW TABLES;
— category / manufacturer / product

② 表结构(⭐ DESCRIBE):

DESCRIBE product; — 可简写 DESC product;

列含义
Field 字段(列)名
Type 数据类型(int 整数、varchar 变长字符串、double 浮点)
Null 是否允许为空(NO = 必填)
Key PRI 表示主键
Default 默认值
Extra auto_increment 自增

💡 主键(PRIMARY KEY):一行的唯一身份证,任何两行主键不能相同。自增(auto_increment):插入时不指定,数据库自动 +1,保证主键唯一。

③ 查询数据:

SELECT * FROM product; — * 表示所有列,查全部记录
SELECT name,price,stock FROM product; — 只查指定列(推荐,数据量小、更清晰)

1.3 条件查询(⭐ WHERE)

SELECT * FROM product WHERE price > 100; — 只返回满足条件的行

比较运算符:

运算符含义
= 等于
<>(或 !=) 不等于
> < >= <= 大小比较
BETWEEN a AND b 在 a~b 之间(含边界)
IN (…) 在给定列表中
LIKE 模糊匹配:% 任意多个字符,_ 恰好一个字符

SELECT * FROM product WHERE id BETWEEN 1 AND 3;
SELECT * FROM category WHERE name IN ('Servers','Ssd');
SELECT * FROM product WHERE name LIKE '%Server%'; — 名字中含 Server

逻辑组合与排序:

— AND 且、OR 或
SELECT * FROM product WHERE name LIKE '%RD%' AND price>1000;
SELECT * FROM product WHERE name LIKE '%RD%' OR price>500;
— ORDER BY 排序,ASC 升序(默认),DESC 降序
SELECT * FROM product ORDER BY price;
SELECT * FROM product ORDER BY price DESC;

1.4 聚合函数与分组

函数作用
avg() 平均值
max() / min() 最大 / 最小
sum() 求和
count() 计数(行数)

SELECT avg(price) FROM product;
SELECT sum(stock) FROM product;
— 查最贵产品:子查询
SELECT * FROM product WHERE price=(SELECT max(price) FROM product);
— GROUP BY:按某列分组后聚合(如每个类别库存合计)
SELECT id_category, sum(stock) FROM product GROUP BY id_category;

1.5 多表查询(🔺 连接)

当数据分散在多张表,需要靠"关联字段"拼接:

— 查类型为 Servers 的产品名和价格
SELECT product.name, product.price
FROM product, category
WHERE product.id_category = category.id — 关联条件
AND category.name='Servers';

💡 product.id_category = category.id 是连接的关键,漏掉会产生"笛卡尔积"(行数爆炸)。

1.6 建表、插入、更新、删除

① 建表 CREATE TABLE:

CREATE TABLE staff(
id INT(11) NOT NULL,
name VARCHAR(100) NOT NULL,
age INT(11) DEFAULT 10,
id_department INT(11)
);

② 插入 INSERT:

INSERT INTO staff (id,name,age,id_department) VALUES (1,'hero1',28,10);
INSERT INTO staff (id,name) VALUES (2,'hero2'); — 未给的列用默认值/NULL

③ 更新 UPDATE(🔺):

UPDATE staff SET age=30 WHERE id=3; — 只改 id=3 这行
UPDATE staff SET age=30; — ⚠️ 没有 WHERE,全表所有行都被改!

④ 删除 DELETE(🔺):

DELETE FROM staff WHERE id=3; — 只删 id=3
DELETE FROM staff; — ⚠️ 没有 WHERE,清空全表(表结构还在)

⑤ 删除表 DROP TABLE:

DROP TABLE staff; — 连表结构带数据一起删除(最彻底)

🔺 DELETE vs DROP 区别(高频面试):DELETE 删「数据行」,表还在;DROP 删「整张表」(结构+数据)。TRUNCATE 则是快速清空全表数据。


第 2 章 管理数据库用户

【使用频率:高】数据库账号与 Linux 系统账号是两套独立体系,即使同名也无关。

2.1 账号格式 user@host

账号由「用户名 + 来源主机」组成,同名用户可因来源不同而权限不同:

账号含义
hero 或 hero@'%' 可从任意主机连接
hero@'localhost' 只能本机连接
hero@'10.1.8.12' 只能从指定 IP
hero@'10.1.8.%' 可从 10.1.8.0/24 网段

2.2 创建用户

CREATE USER hero@'%' IDENTIFIED BY '123';

新用户默认只有最小权限,什么库表都操作不了,必须再授权。 密码经加密后存在 mysql.user 表(不是明文)。

2.3 授权 GRANT(⭐ 四级粒度)

GRANT 权限1,权限2 ON 范围 TO '用户'@'主机';

范围写法适用
全局 *.* DBA、超级管理员
数据库级 库名.* 业务库开发
表级 库名.表名 单表操作
列级 库名.表名(列1,列2) 敏感列(手机号/密码)管控

常用权限:SELECT/INSERT/UPDATE/DELETE(增删改查)、CREATE/ALTER/DROP(结构)、ALL PRIVILEGES(全部)。

— 业务库全权限
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ON inventory.* TO hero@'%';
— 只读账号(报表/监控)
GRANT SELECT ON inventory.* TO 'report'@'%';
— 全局管理员
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'localhost';

授权后执行 FLUSH PRIVILEGES; 让权限生效。

💡 最小权限原则:只给"刚好够用"的权限;生产环境避免 @'%',应限定具体 IP/网段。

2.4 查看 / 回收 / 删除 / 改密码

SHOW GRANTS FOR hero@'%'; — 查看权限
SHOW GRANTS; — 查看当前登录用户权限

REVOKE DELETE ON inventory.* FROM hero@'%'; — 回收某权限
DROP USER hero@'%'; — 删除用户

— 改密码
SET PASSWORD FOR 'hero'@'%' = PASSWORD('新密码');
SET PASSWORD = PASSWORD('新密码'); — 改自己的密码
FLUSH PRIVILEGES;

2.5 常见访问故障

现象原因 / 解决
只能本机连,远程连不上 server.cnf 设了 skip-networking;或 bind-address 不对;user 表无对应主机记录
能连但只看得到 information_schema 没给该用户授权(新用户最小权限)
能连但不能建库 需授予全局 CREATE 权限
能连但不能读写数据 需授予对应库的 CRUD 权限

第 3 章 备份和恢复

【使用频率:高】备份是运维保命手段。

3.1 ⭐ 逻辑备份 vs 物理备份

对比逻辑备份物理备份
内容 导出为可重建数据库的 SQL 文本 直接复制数据库目录/文件
速度 慢(要转换格式) 快(直接拷文件)
可移植性 高,甚至可导入其他数据库 差,需相同软硬件环境
执行时机 服务在线即可 通常需停服或锁表
是否含日志/配置 不含 可包含

3.2 物理备份 / 恢复

systemctl stop mariadb
cp -a /var/lib/mysql /backup/mysql # 备份(-a 保留属性)

# 恢复
systemctl stop mariadb
rm -fr /var/lib/mysql
cp -a /backup/mysql /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql # 关键:恢复属主
systemctl start mariadb

3.3 逻辑备份 mysqldump(⭐ 最常用)

# 方式1:只备份数据/表(不含建库语句)
mysqldump -u root -p inventory > /backup/inventory-1.sql
# 方式2:含 CREATE DATABASE / USE(推荐,恢复最省事)
mysqldump -u root -p –databases inventory > /backup/inventory-2.sql
# 方式3:备份所有数据库
mysqldump -u root -p –all-databases > /backup/all.sql

恢复:

# 方式2 的文件(自带建库),直接导入
mysql -u root -p < /backup/inventory-2.sql
# 方式1 的文件,需先建库再指定库导入
mysql -u root -p -e 'create database inventory;'
mysql -u root -p inventory < /backup/inventory-1.sql

在 mysql 命令行内也可用 source /backup/xxx.sql; 执行恢复。 🔺 还原会用备份内容覆盖现有数据,比备份新的数据会丢失。


第 4 章 主从同步

【使用频率:高】主从复制用于读写分离、备份、高可用,是数据库扩展的基础。

4.1 ⭐ 同步原理(🔺 核心,务必理解)

本质:主库把数据变更写进 binlog,从库拉取并重放。涉及两个日志、两个线程:

主库 Master:写操作 → 记录到 二进制日志 binlog
│
│ 从库 IO 线程主动连接主库、拉取 binlog
▼
从库 Slave:IO 线程把内容写入 中继日志 relay log
│
│ SQL 线程读取 relay log,逐条重放
▼
从库数据与主库最终一致

角色名称职责
主库 binlog 记录所有数据变更
从库 IO 线程 Slave_IO_Running 拉主库 binlog,写入 relay log
从库 SQL 线程 Slave_SQL_Running 读 relay log 并重放 SQL

💡 主库写完 binlog 就立即回复客户端(不等从库),这是"异步"特征。

4.2 常见架构

  • 一主一从 / 一主多从:主写从读,多从可分担读压力(读写分离);
  • 级联复制:主→从1→从2,减轻主库复制压力;
  • 双主复制:互为主从,多用于高可用切换,一般不双写(易冲突)。

4.3 三种复制方式

方式原理特点
异步(默认) 主库写完即回复,不等从库 性能最好,宕机可能丢数据
半同步 主库等至少一个从库确认收到 binlog 再回复;超时降级异步 一致性更好,性能略损
全同步 等所有从库执行完才回复 一致性最高、性能最差(需 MGR 等实现)

4.4 主从延迟

  • 延迟没有固定值,取决于从库"拉取+执行"速度;
  • 影响因素:网络(跨机房慢)、主库大事务/高写入、从库硬件差、SQL 线程单线程;
  • 监控:从库 SHOW SLAVE STATUS\\G; 中 Seconds_Behind_Master 即落后秒数;
  • 优化:提升从库配置、开启并行复制(slave_parallel_workers)、拆分大事务、级联复制。

4.5 ⭐ 主从同步实践(db1 = 10.1.8.13 主,db2 = 10.1.8.14 从)

① 配置主库 db1:

cat > /etc/my.cnf.d/master.cnf <<'EOF'
[mysqld]
server_id = 1
log_bin = mysql-bin
binlog_format = ROW
relay_log = mysql-relay-bin
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
EOF

systemctl restart mariadb

② 配置从库 db2:

cat > /etc/my.cnf.d/master.cnf <<'EOF'
[mysqld]
server_id = 2
log_bin = mysql-bin
binlog_format = ROW
relay_log = mysql-relay-bin
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
EOF

systemctl restart mariadb

③ 主库建立复制账号、查看位点:

— 在 db1(10.1.8.13)执行
mysql –uroot –p123
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.*
TO 'repl'@'10.1.8.14' IDENTIFIED BY '123';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
— 记下 File(如 mysql-bin.000003)和 Position(如 327)

④ 从库指向主库并启动:

— 在 db2(10.1.8.14)执行
mysql –uroot –p123
CHANGE MASTER TO
master_host='10.1.8.13',
master_user='repl',
master_password='123',
master_port=3306,
— 与主节点 SHOW MASTER STATUS 查到的对应
master_log_file='mysql-bin.000003',
master_log_pos=327,
master_connect_retry=30;

START SLAVE;
SHOW SLAVE STATUS\\G;
— 确认两项都为 Yes:
— Slave_IO_Running: Yes
— Slave_SQL_Running: Yes

⑤ 验证同步:

— 主库 db1 建库建表插数据
CREATE DATABASE test; USE test;
CREATE TABLE linux(username varchar(15), password varchar(15));
INSERT INTO linux VALUES ('hero1','123'),('hero2','123'),('hero3','123');

— 从库 db2 查询,能看到即同步成功
SELECT * FROM test.linux;

🔺 配置要点:两库 server_id 不能重复;从库 CHANGE MASTER 里的文件名和位点必须来自主库 SHOW MASTER STATUS 的真实值。

4.6 防止数据丢失的关键参数

  • 半同步复制;
  • sync_binlog=1:每次事务把 binlog 刷盘;
  • innodb_flush_log_at_trx_commit=1:事务提交立即刷 redo log。

第 5 章 应急场景(🔺 救命)

共同思路:绕过权限验证启动 → 改权限表 → 恢复正常启动。

5.1 忘记 root 密码

  • /etc/my.cnf.d/server.cnf 的 [mysqld] 下加 skip-grant-tables=1;
  • 重启 mariadb;
  • mysql -u root 免密进入,执行:UPDATE mysql.user SET password=PASSWORD('123') WHERE User='root';
    FLUSH PRIVILEGES;
  • 去掉 skip-grant-tables,重启服务。
  • 5.2 root 权限被误回收

    • 同样 skip-grant-tables 启动后:
      • 老版本:UPDATE mysql.user SET 各权限列='Y' WHERE User='root'; FLUSH PRIVILEGES;
      • 新版本:FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
    • 重启恢复。

    5.3 root 账号被误删除

    • skip-grant-tables 启动后:
      • 老版本:向 mysql.user 插入 root 行(各权限列设 Y);
      • 新版本:CREATE USER 'root'@'localhost' IDENTIFIED BY '123'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
    • FLUSH PRIVILEGES; 后重启。

    第二篇 Nginx 服务器

    第 6 章 Nginx 介绍

    【使用频率:极高】当今最主流的 Web 服务器 / 反向代理 / 负载均衡器。

    Nginx(engine x)是一款高性能的 HTTP 服务器和反向代理服务器:高并发下可支撑约 5 万并发连接,而内存、CPU 消耗很低、运行稳定。

    在这里插入图片描述

    • 典型位置:用户浏览器 → Nginx(统一入口) → 后端 Tomcat / Apache / 应用服务器;
    • 静态资源可缓存到浏览器,上游响应可缓存到 Nginx,进一步提速、减压。

    💡 Nginx 常见四大角色:① Web 服务器(提供静态网页);② 反向代理;③ 负载均衡;④ 缓存。

    第 7 章 Nginx 部署

    # 安装、启动
    yum -y install nginx
    systemctl enable nginx –now

    # 准备主页(备份原首页,写入新内容)
    mv /usr/share/nginx/html/index.html{,.ori}
    echo Hello World From Nginx > /usr/share/nginx/html/index.html

    # 防火墙放行 HTTP
    firewall-cmd –add-service=http –permanent
    firewall-cmd –reload

    用域名访问(配置 hosts 解析):

    # Linux / Unix 改 /etc/hosts;Windows 改 C:\\Windows\\System32\\drivers\\etc\\hosts
    10.1.8.11 www.hero.cloud

    之后 curl http://www.hero.cloud 即可访问。

    第 8 章 Nginx 配置结构(⭐ 层级化)

    整体是嵌套结构:全局块 → events 块 → http 块 → server 块 → location 块。

    层级作用关键指令
    全局块 整个进程的基础设置 user、worker_processes、error_log、pid
    events 块 网络连接模型 worker_connections、use epoll
    http 块 所有 HTTP 服务公共配置 include mime.types、log_format、sendfile、keepalive
    server 块 一个虚拟主机 listen、server_name、root
    location 块 URL 路径匹配规则 index、try_files、proxy_pass

    # 全局
    user nginx;
    worker_processes auto; # 工作进程数,auto=按 CPU 核数

    # events
    events {
    worker_connections 1024; # 每个工作进程最大连接数
    use epoll; # Linux 高性能事件模型
    }

    # http
    http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;

    server {
    listen 80;
    server_name localhost;
    root /usr/share/nginx/html;

    location / {
    index index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    }
    }

    💡 并发能力怎么算:最大连接数 ≈ worker_processes × worker_connections。 HTTPS 在 server 块加 listen 443 ssl; 并配置 ssl_certificate(公钥)、ssl_certificate_key(私钥)。

    第 9 章 nginx.conf 详解要点

    主配置文件 /etc/nginx/nginx.conf,重点指令:

    指令含义
    user nginx 工作进程运行用户
    worker_processes auto 工作进程数(建议=CPU 核数)
    log_format / access_log 日志格式 / 访问日志
    sendfile on 高效文件传输(零拷贝)
    tcp_nopush / tcp_nodelay 优化数据包发送、降低延迟
    keepalive_timeout 65 长连接保持时间
    include /etc/nginx/conf.d/*.conf 加载子配置(虚拟主机通常写这里)

    💡 生产中习惯把每个站点写成 /etc/nginx/conf.d/xxx.conf,主配置只保留全局设置,便于管理。

    第 10 章 配置加载与 location 匹配(🔺)

    • include 可引入外部配置,实现模块化;
    • 优先级:子级覆盖父级;同层后定义覆盖先定义;
    • location 匹配优先级(高→低):
    • 精确匹配 =
    • 前缀匹配 ^~
    • 正则匹配 ~(区分大小写)/ ~*(不区分)
    • 普通前缀匹配
    • 修改配置后先测试再重载:nginx -t # 检查语法(⭐必做)
      systemctl reload nginx # 平滑重载,不断连接

    第 11 章 虚拟主机

    【使用频率:高】同一台 Web 服务器对外提供多个站点。 三种区分方式:域名(最常用)、端口、IP(基本不用)。

    11.1 基于域名(⭐ 最常用)

    /etc/nginx/conf.d/vhost-name.conf:

    server {
    server_name web1.hero.cloud;
    root /usr/share/nginx/web1;
    }
    server {
    server_name web2.hero.cloud;
    root /usr/share/nginx/web2;
    }

    准备目录和首页:

    mkdir /usr/share/nginx/web{1,2}
    echo web1.hero.cloud > /usr/share/nginx/web1/index.html
    echo web2.hero.cloud > /usr/share/nginx/web2/index.html
    nginx -t && systemctl restart nginx

    客户端 hosts:

    10.1.8.11 web1.hero.cloud
    10.1.8.11 web2.hero.cloud

    测试:

    curl http://web1.hero.cloud/ # web1.hero.cloud
    curl http://web2.hero.cloud/ # web2.hero.cloud

    11.2 基于端口

    server { listen 8081; server_name www.hero.cloud; root /usr/share/nginx/8081; }
    server { listen 8082; server_name www.hero.cloud; root /usr/share/nginx/8082; }

    mkdir /usr/share/nginx/808{1,2}
    echo 8081 > /usr/share/nginx/8081/index.html
    echo 8082 > /usr/share/nginx/8082/index.html
    nginx -t && systemctl restart nginx
    curl http://www.hero.cloud:8081 # 8081
    curl http://www.hero.cloud:8082 # 8082

    💡 实验后及时清理(移走/删除 conf.d 中的实验配置),避免影响后续实验。


    总结篇

    一、核心知识链路

    MariaDB:
    表 CRUD:SELECT(+WHERE/ORDER BY/聚合) / INSERT / UPDATE / DELETE;DROP 删表
    用户:CREATE USER user@host → GRANT(*.* / 库.* / 表 / 列)→ FLUSH PRIVILEGES
    备份:逻辑 mysqldump(SQL文本、可移植、慢) vs 物理(拷目录、快)
    主从:主库 binlog → 从库 IO线程写 relay log → SQL线程重放
    db1(.13) 建 repl 账号/查位点 → db2(.14) CHANGE MASTER + START SLAVE
    应急:skip-grant-tables 绕过验证后修复

    Nginx:
    部署 → 配置层级 全局/events(http→server→location)
    nginx -t 校验 → reload
    虚拟主机:域名(常用)/ 端口

    二、重点 / 难点 / 频率

    内容重要度频率
    SELECT 条件/排序/聚合/多表 ⭐ 极高
    INSERT/UPDATE/DELETE、无 WHERE 风险 ⭐ 极高
    用户与 GRANT 四级权限、最小权限 ⭐ 高
    mysqldump 逻辑备份恢复 ⭐ 高
    主从原理(binlog/IO/SQL 线程) 🔺 高
    主从实践配置 🔺 高
    skip-grant-tables 应急 🔺 中
    Nginx 部署与配置层级 ⭐ 极高
    nginx -t / reload、location 优先级 🔺 高
    虚拟主机(域名/端口) ⭐ 高

    三、易错清单

  • 🔺 UPDATE/DELETE 不带 WHERE 会改动/清空全表,执行前再三确认。
  • 🔺 DELETE 删数据、DROP 删整表,别混淆。
  • 🔺 新建用户必须授权,否则只能看到 information_schema。
  • 🔺 生产避免 user@‘%’ 和明文密码,遵循最小权限。
  • 🔺 物理恢复后必须 chown -R mysql:mysql。
  • 🔺 主从两库 server_id 不能重复;CHANGE MASTER 位点要来自主库真实状态。
  • 🔺 主从看两个线程:Slave_IO_Running、Slave_SQL_Running 都要 Yes。
  • 🔺 改 Nginx 配置先 nginx -t,再 reload。
  • 🔺 基于域名的虚拟主机,客户端必须先配好 hosts/DNS 解析。
  • 🔺 Nginx 防火墙放行 http(80)/https(443)。
  • 四、面试速记

  • DELETE、TRUNCATE、DROP 区别? → DELETE 按条件删行(可回滚);TRUNCATE 清空全表(快、不可按条件);DROP 删除整张表(结构+数据)。
  • MySQL 授权粒度? → 全局 *.*、库 库.*、表、列四级;遵循最小权限。
  • 逻辑备份和物理备份区别? → 逻辑导出 SQL 文本、可移植但慢;物理拷文件、快但依赖相同环境。
  • 主从复制原理? → 主库写 binlog;从库 IO 线程拉取写 relay log;SQL 线程重放,数据最终一致。
  • 异步和半同步区别? → 异步主库不等从库、可能丢数据;半同步等至少一个从库确认,更安全。
  • 主从延迟怎么看、怎么优化? → Seconds_Behind_Master;提升从库配置、并行复制、拆大事务、级联复制。
  • 忘记 MySQL root 密码怎么办? → skip-grant-tables 启动,免密登录改密码,再去掉该参数重启。
  • Nginx 配置文件层级? → 全局/events/http/server/location;改完 nginx -t 再 reload。
  • Nginx 虚拟主机怎么区分? → 域名(常用)、端口、IP。
  • Nginx 常用场景? → Web 服务器、反向代理、负载均衡、缓存。
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » MariaDB 进阶(数据表 / 用户 / 备份 / 主从)与 Nginx 服务器入门
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!