当前位置: 首页 > news >正文

MariaDB 数据库管理指南

文章目录

  • MariaDB 数据库管理
    • MariaDB 数据库介绍
      • 数据库基础概念
      • 数据库种类
      • 关系数据库与 RDBMS
      • MariaDB 简介
    • MariaDB 数据库部署
      • 安装服务端与客户端
      • 启用并启动服务
      • 数据库加固
      • MariaDB 连接方式
      • MariaDB 配置文件与参数
    • MariaDB 中 SQL 语句
      • SQL 基础
      • 数据库操作
        • 查询数据库列表
        • 选择数据库
        • 创建数据库
        • 删除数据库
      • 表操作
        • 导入数据
        • 表查询操作
        • 表数据插入
        • 表数据更新
    • MariaDB 用户管理
      • 用户账户基础
      • 用户权限管理
        • 权限范围分类
        • 查询用户权限
        • 授予用户权限
        • 回收用户权限
    • MariaDB 备份与恢复
      • 备份方式对比
      • 执行备份
        • 逻辑备份
        • 物理备份
      • 执行恢复
        • 1. 逻辑备份恢复
        • 2. 物理备份恢复

MariaDB 数据库管理

MariaDB 数据库介绍

数据库基础概念

  1. 数据库定义:数据库是按照特定数据结构组织和存储计算机数据的仓库,支持多种数据管理操作,可高效管理其中数据。
  2. 数据结构:指数据的组织形式以及数据之间的关联关系,是数据库高效存储和管理数据的关键。

数据库种类

  1. 早期主流数据库模型
    • 层次式数据库:以层次模型构建,类似树状结构,例如文件系统。
    • 网状数据库:以网状模型构建,数据间关系复杂,例如网络通信系统。
    • 关系型数据库:以二维表模型构建,数据组织清晰,例如图书馆管理系统。
  2. 当今互联网常用数据库类型
    • 关系型数据库:将复杂数据结构简化为二维表形式,数据操作围绕表展开(分类、合并、连接等)。常见产品有 Oracle、MySQL、PostgreSQL、MariaDB。
    • 非关系型数据库(NoSQL):意为 “Not Only SQL”,并非否定关系型数据库,而是作为补充。适用于非结构化、半结构化数据存储,典型产品包括 Redis(持久化缓存)、Mongodb、Memcached(纯内存)。

关系数据库与 RDBMS

  1. 关系数据库特点:采用相互关联的二维表存储结构化数据,可灵活组合不同表的信息,便于数据处理和生成报告。
  2. RDBMS(关系数据库管理系统):用于管理关系数据库的软件,多数支持通过结构化查询语言(SQL)操作数据。
  3. 典型应用架构(LAMP/LNMP)
    • Linux:提供基础操作系统环境。
    • Apache/Nginx:作为 Web 服务器,处理 HTTP 请求。
    • MariaDB/MySQL/PostgreSQL:存储网站数据,是数据持久化的核心。
    • 编程语言(PHP/Python/Java 等):运行在 Web 服务器端,更新数据库数据并动态生成网页内容。

MariaDB 简介

  1. 起源与授权:MariaDB 是 MySQL 的分支,由开源社区维护,采用 GPL 授权许可。因甲骨文收购 MySQL 后存在闭源风险,开源社区通过分支开发 MariaDB 以规避该风险。
  2. 兼容性:完全兼容 MySQL 的 API 和命令行,可无缝替代 MySQL,降低迁移成本。
  3. 数据组织:一个 MariaDB 实例可包含多个数据库(database),每个数据库包含多张表(table);表采用二维结构,类似 Excel 工作表,行代表记录(元组),列代表字段(属性),行列交叉处为属性值。

MariaDB 数据库部署

安装服务端与客户端

[root@server ~ 08:53:57]# yum install -y mariadb-server.x86_64 

启用并启动服务

[root@server ~ 10:12:32]# systemctl enable mariadb.service --now
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

数据库加固

[root@server ~ 10:14:37]# mysql_secure_installation 

通过mysql_secure_installation命令修改默认不安全配置,交互式完成以下操作:

  • 为 root 账户设置密码。
  • 禁止 root 账户从本地主机外部访问。
  • 删除匿名用户账户。
  • 删除演示用的 test 数据库。

MariaDB 连接方式

  1. 套接字文件连接
    • 适用场景:客户端与服务器在同一台主机。
    • 特点:无需网络监听,安全性高,但依赖本地服务运行,可能影响性能。
  2. TCP/IP 网络连接
    • 适用场景:客户端与服务器在不同主机(远程连接)。
    • 要求:服务器需配置监听 3306/TCP 端口,确保网络通畅。

MariaDB 配置文件与参数

  1. 核心配置文件

    • 主配置文件:/etc/my.cnf
    • 辅助配置文件:/etc/my.conf.d/*(核心服务配置文件为/etc/my.conf.d/mariadb-server.cnf
  2. 关键服务配置参数([mysqld] 块中定义)

    • bind-address
      

      :指定监听的网络地址,可选值包括:

      • 单个 IPv4 地址(如 192.168.1.100)。
      • 单个 IPv6 地址(如 2001:db8::1)。
      • :::监听所有 IPv4 和 IPv6 地址。
      • 空白或0.0.0.0:监听所有 IPv4 地址。
      • 本地访问建议设为127.0.0.1::1
    • skip-networking:是否禁用网络连接,skip-networking=1禁用(仅允许套接字连接),默认0(启用网络连接)。

    • port:指定监听端口,默认 3306/TCP,可自定义修改。

[root@server ~ 16:50:07]# cat /etc/my.cnf.d/client.cnf
#
# These two groups are read by the client library
# Use it for options that affect all clients, but not the server
#[client]
user=root
password=123456
# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb][root@server ~ 16:50:22]# 

MariaDB 中 SQL 语句

SQL 基础

  1. SQL 定义:结构化查询语言(Structured Query Language),1986 年 10 月由美国国家标准局颁布,后成为 ISO 国际标准,是关系数据库的核心操作语言,广泛应用于数据检索、管理等场景。

  2. SQL 语句分类

    分类英文全称功能关键字 / 命令
    数据查询语言DQL(Data Query Language)检索表中数据SELECT、WHERE、ORDER BY、GROUP BY、HAVING
    数据操作语言DML(Data Manipulation Language)增删改表中数据INSERT、UPDATE、DELETE
    数据定义语言DDL(Data Definition Language)定义数据库 / 表结构CREATE、DROP、ALTER
    事务处理语言TPL(Transaction Processing Language)确保数据更新一致性BEGIN TRANSACTION、COMMIT、ROLLBACK
    数据控制语言DCL(Data Control Language)管理用户权限GRANT、REVOKE

数据库操作

查询数据库列表
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

默认数据库说明:

  • mysql:系统数据库,存储用户信息、权限配置等。
  • information_schema:存储数据库 / 表的元数据(如字段类型、表结构)。
  • performance_schema:存储数据库服务器性能指标数据。
选择数据库
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [mysql]> 
# 提示符变为当前数据库名
创建数据库
# 创建数据库
MariaDB [(none)]> create database db;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db                 |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)
删除数据库
MariaDB [(none)]> drop database db;
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

特权的用户可执行此操作;删除数据库后,原用户权限仍保留,若重建同名数据库,权限自动生效。

表操作

导入数据
[root@server ~ 10:42:53]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
# 创建数据库
MariaDB [(none)]> create database inventory;
Query OK, 1 row affected (0.00 sec)MariaDB [inventory]> exit
Bye
#导入表
[root@server ~ 11:11:18]# mysql inventory < inventory.sql 
[root@server ~ 11:11:27]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 21
Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| inventory          |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
表查询操作
  • 查询表列表:查看当前数据库中的所有表

    MariaDB [(none)]> use inventory;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -ADatabase changed
    MariaDB [inventory]> show tables;
    +---------------------+
    | Tables_in_inventory |
    +---------------------+
    | category            |
    | manufacturer        |
    | product             |
    +---------------------+
    3 rows in set (0.00 sec)
  • 查询表结构:查看表的字段定义、数据类型等信息

    # 或简写 DESC product;
    MariaDB [inventory]>MariaDB [inventory]> describe product;
    +-----------------+--------------+------+-----+---------+----------------+
    | Field           | Type         | Null | Key | Default | Extra          |
    +-----------------+--------------+------+-----+---------+----------------+
    | id              | int(11)      | NO   | PRI | NULL    | auto_increment |
    | name            | varchar(100) | NO   |     | NULL    |                |
    | price           | double       | NO   |     | NULL    |                |
    | stock           | int(11)      | NO   |     | NULL    |                |
    | id_category     | int(11)      | NO   |     | NULL    |                |
    | id_manufacturer | int(11)      | NO   |     | NULL    |                |
    +-----------------+--------------+------+-----+---------+----------------+
    6 rows in set (0.00 sec)

    输出结果中各列含义:

    列名含义
    Field字段名称
    Type数据类型(如 int (11)、varchar (100))
    Null是否允许为空(YES/NO)
    Key关键字类型(PRI 表示主键)
    Default字段默认值
    Extra额外信息(如 auto_increment 表示自增)
  • 查询表数据

    • 查询所有记录所有字段:

      SELECT * FROM 表名;
      
      MariaDB [inventory]> select * from product;
      +----+-------------------------------+---------+-------+-------------+-----------------+
      | id | name                          | price   | stock | id_category | id_manufacturer |
      +----+-------------------------------+---------+-------+-------------+-----------------+
      |  1 | ThinkServer TS140             |  539.88 |    20 |           2 |               4 |
      |  2 | ThinkServer RD630             | 2379.14 |    20 |           2 |               4 |
      |  3 | RT-AC68U                      |  219.99 |    10 |           1 |               3 |
      |  4 | X110 64GB                     |   73.84 |   100 |           3 |               1 |
      |  5 | Dell XPS 15                   | 1299.99 |    15 |           4 |               5 |
      |  6 | HP Pavilion 14                |  799.99 |    25 |           4 |               6 |
      |  7 | Samsung 27-inch 4K            |  349.99 |    30 |           5 |               8 |
      |  8 | Logitech Mechanical K845      |   89.99 |    50 |           6 |               7 |
      |  9 | Acer Swift 3                  |  699.99 |    18 |           4 |               9 |
      | 10 | Microsoft Surface Pro 9       | 1199.99 |    12 |           4 |              10 |
      | 11 | Kingston A400 240GB           |   49.99 |    80 |           3 |               2 |
      | 12 | Asus TUF Gaming VG27AQ        |  399.99 |    22 |           5 |               3 |
      | 13 | Dell OptiPlex 7010            |  899.99 |    16 |           2 |               5 |
      | 14 | HP Z2 Mini Workstation        | 1499.99 |     8 |           2 |               6 |
      | 15 | Logitech G502 Hero            |   79.99 |    40 |           7 |               7 |
      | 16 | HP LaserJet Pro M428fdw       |  499.99 |    12 |           8 |               6 |
      | 17 | Samsung T7 Shield 2TB         |  199.99 |    35 |           9 |               8 |
      | 18 | Kingston Fury Beast 16GB DDR4 |   44.99 |    60 |          10 |               2 |
      | 19 | Dell Ultrasharp U2419H        |  299.99 |    20 |           5 |               5 |
      | 20 | Acer Nitro AN515-57           |  999.99 |    14 |           4 |               9 |
      +----+-------------------------------+---------+-------+-------------+-----------------+
      20 rows in set (0.00 sec)
    • 查询特定字段:

      SELECT 字段1,字段2,... FROM 表名;
      
      MariaDB [inventory]> select name,price from product;
      +-------------------------------+---------+
      | name                          | price   |
      +-------------------------------+---------+
      | ThinkServer TS140             |  539.88 |
      | ThinkServer RD630             | 2379.14 |
      | RT-AC68U                      |  219.99 |
      | X110 64GB                     |   73.84 |
      | Dell XPS 15                   | 1299.99 |
      | HP Pavilion 14                |  799.99 |
      | Samsung 27-inch 4K            |  349.99 |
      | Logitech Mechanical K845      |   89.99 |
      | Acer Swift 3                  |  699.99 |
      | Microsoft Surface Pro 9       | 1199.99 |
      | Kingston A400 240GB           |   49.99 |
      | Asus TUF Gaming VG27AQ        |  399.99 |
      | Dell OptiPlex 7010            |  899.99 |
      | HP Z2 Mini Workstation        | 1499.99 |
      | Logitech G502 Hero            |   79.99 |
      | HP LaserJet Pro M428fdw       |  499.99 |
      | Samsung T7 Shield 2TB         |  199.99 |
      | Kingston Fury Beast 16GB DDR4 |   44.99 |
      | Dell Ultrasharp U2419H        |  299.99 |
      | Acer Nitro AN515-57           |  999.99 |
      +-------------------------------+---------+
      20 rows in set (0.00 sec)
    • 带条件查询(WHERE 子句):支持多种条件操作符

      # 1. 价格大于100的产品
      MariaDB [inventory]> SELECT * FROM product WHERE price > 100;
      +----+-------------------------+---------+-------+-------------+-----------------+
      | id | name                    | price   | stock | id_category | id_manufacturer |
      +----+-------------------------+---------+-------+-------------+-----------------+
      |  1 | ThinkServer TS140       |  539.88 |    20 |           2 |               4 |
      |  2 | ThinkServer RD630       | 2379.14 |    20 |           2 |               4 |
      |  3 | RT-AC68U                |  219.99 |    10 |           1 |               3 |
      |  5 | Dell XPS 15             | 1299.99 |    15 |           4 |               5 |
      |  6 | HP Pavilion 14          |  799.99 |    25 |           4 |               6 |
      |  7 | Samsung 27-inch 4K      |  349.99 |    30 |           5 |               8 |
      |  9 | Acer Swift 3            |  699.99 |    18 |           4 |               9 |
      | 10 | Microsoft Surface Pro 9 | 1199.99 |    12 |           4 |              10 |
      | 12 | Asus TUF Gaming VG27AQ  |  399.99 |    22 |           5 |               3 |
      | 13 | Dell OptiPlex 7010      |  899.99 |    16 |           2 |               5 |
      | 14 | HP Z2 Mini Workstation  | 1499.99 |     8 |           2 |               6 |
      | 16 | HP LaserJet Pro M428fdw |  499.99 |    12 |           8 |               6 |
      | 17 | Samsung T7 Shield 2TB   |  199.99 |    35 |           9 |               8 |
      | 19 | Dell Ultrasharp U2419H  |  299.99 |    20 |           5 |               5 |
      | 20 | Acer Nitro AN515-57     |  999.99 |    14 |           4 |               9 |
      +----+-------------------------+---------+-------+-------------+-----------------+
      15 rows in set (0.00 sec)# 2. ID在1-3之间的产品(包含边界值)
      MariaDB [inventory]> SELECT * FROM product WHERE id BETWEEN 1 AND 3;
      +----+-------------------+---------+-------+-------------+-----------------+
      | id | name              | price   | stock | id_category | id_manufacturer |
      +----+-------------------+---------+-------+-------------+-----------------+
      |  1 | ThinkServer TS140 |  539.88 |    20 |           2 |               4 |
      |  2 | ThinkServer RD630 | 2379.14 |    20 |           2 |               4 |
      |  3 | RT-AC68U          |  219.99 |    10 |           1 |               3 |
      +----+-------------------+---------+-------+-------------+-----------------+
      3 rows in set (0.00 sec)
      
表数据插入
MariaDB [inventory]> select * from product;
+----+-------------------------------+---------+-------+-------------+-----------------+
| id | name                          | price   | stock | id_category | id_manufacturer |
+----+-------------------------------+---------+-------+-------------+-----------------+
|  1 | ThinkServer TS140             |  539.88 |    20 |           2 |               4 |
|  2 | ThinkServer RD630             | 2379.14 |    20 |           2 |               4 |
...
| 19 | Dell Ultrasharp U2419H        |  299.99 |    20 |           5 |               5 |
| 20 | Acer Nitro AN515-57           |  999.99 |    14 |           4 |               9 |
+----+-------------------------------+---------+-------+-------------+-----------------+
20 rows in set (0.00 sec)MariaDB [inventory]> insert into product(id,name,price,stock) values (21,'Acer Nitro AN515-57',10086,9);
Query OK, 1 row affected, 2 warnings (0.00 sec)MariaDB [inventory]> select * from product;
+----+-------------------------------+---------+-------+-------------+-----------------+
| id | name                          | price   | stock | id_category | id_manufacturer |
+----+-------------------------------+---------+-------+-------------+-----------------+
|  1 | ThinkServer TS140             |  539.88 |    20 |           2 |               4 |
|  2 | ThinkServer RD630             | 2379.14 |    20 |           2 |               4 |
...
| 19 | Dell Ultrasharp U2419H        |  299.99 |    20 |           5 |               5 |
| 20 | Acer Nitro AN515-57           |  999.99 |    14 |           4 |               9 |
| 21 | Acer Nitro AN515-57           |   10086 |     9 |           0 |               0 |
+----+-------------------------------+---------+-------+-------------+-----------------+
21 rows in set (0.00 sec)
表数据更新
MariaDB [inventory]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [mysql]> select user,host,password from user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | ::1       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| yang | %         | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)#更新用户“yang”只能本地登录
MariaDB [mysql]> update user set host='localhost' where user='yang';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0#更新用户“yang”的密码为abc
MariaDB [mysql]> update user set password=password('abc') where user='yang';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0MariaDB [mysql]> select user,host,password from user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | ::1       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| yang | localhost | *0D3CED9BEC10A777AEC23CCC353A8C08A633045E |
+------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)

MariaDB 用户管理

用户账户基础

  1. 账户独立性:MariaDB 用户与 Linux 系统用户相互独立,即使名称相同,权限和认证也不关联。支持通过 PAM 插件集成系统用户(本课程不涉及),建议分开管理以提升安全性。

  2. 创建用户权限要求

    :需具备以下任一权限

    • MariaDB 的 root 用户权限。
    • 全局CREATE USER特权。
    • mysql数据库的INSERT特权(直接操作mysql.user表)。
  3. 常见格式示例:

    账户格式说明
    root@‘%’允许 root 用户从任意主机连接
    root@‘localhost’仅允许 root 用户从本地主机连接
    root@‘10.1.8.10’仅允许 root 用户从 10.1.8.10 连接
    yang@‘10.1.8.%’允许 yang 用户从 10.1.8.0/24 网段连接
#创建一个可以在任意登录的密码为123456的“king”用户
MariaDB [mysql]> create user king@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)MariaDB [mysql]> select user,host,password from user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | ::1       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| king | %         | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| yang | %         | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
5 rows in set (0.00 sec)

用户权限管理

权限范围分类
权限范围作用示例特权
全局特权管理数据库服务器整体CREATE USER、SUPER
数据库特权操作特定数据库CREATE DATABASE、ALTER DATABASE
表特权操作特定表的数据SELECT、INSERT、UPDATE、DELETE
列特权操作表中特定列(较少用)SELECT(column1)、UPDATE(column2)
查询用户权限
#查看king用户权限
MariaDB [mysql]> show grants for king@'%';
+-----------------------------------------------------------------------------------------------------+
| Grants for king@%                                                                                   |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'king'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+-----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
授予用户权限

使用GRANT语句授予权限,授予者需具备GRANT OPTION特权及对应的目标特权:

常见授权场景示例:

授权语句说明
GRANT SELECT ON inventory.* TO yang@‘%’;授予 yang 对 inventory 数据库所有表的查询权限
GRANT SELECT ON . TO yang@‘%’;授予 yang 对所有数据库所有表的查询权限
GRANT CREATE, ALTER, DROP ON inventory.* TO yang@‘%’;授予 yang 对 inventory 数据库的表创建、修改、删除权限
GRANT ALL PRIVILEGES ON . TO yang@‘%’;授予 yang 超级用户权限(类似 root)
#赋予king用户对 inventory 数据库的表创建、修改、删除权限
MariaDB [mysql]> GRANT CREATE, ALTER, DROP ON inventory.* TO king@'%';
Query OK, 0 rows affected (0.00 sec)MariaDB [mysql]> show grants for king@'%';
+-----------------------------------------------------------------------------------------------------+
| Grants for king@%                                                                                   |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'king'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT CREATE, DROP, ALTER ON `inventory`.* TO 'king'@'%'                                            |
+-----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
回收用户权限
#收回king用户对 inventory 数据库的表创建、修改、删除权限
MariaDB [mysql]> revoke CREATE, ALTER, DROP ON inventory.* from king@'%';
Query OK, 0 rows affected (0.00 sec)MariaDB [mysql]> show grants for king@'%';
+-----------------------------------------------------------------------------------------------------+
| Grants for king@%                                                                                   |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'king'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+-----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB 备份与恢复

备份方式对比

备份类型特点适用场景
逻辑备份1. 导出为包含 SQL 命令的文本文件;2. 备份速度较慢(需转换数据格式);3. 可移植性高(支持还原到其他数据库,如 PostgreSQL);4. 服务器联机时执行;5. 不包含日志和配置文件。跨数据库迁移、小数据量备份、需灵活还原场景
物理备份1. 直接复制数据库目录和原始数据文件;2. 备份速度快;3. 可移植性低(仅适用于软硬件相似环境);4. 需服务器脱机或锁定表(避免数据修改);5. 可包含日志和配置文件。大数据量备份、同环境快速恢复、需完整数据备份场景

执行备份

逻辑备份

使用 mysqldump 命令

  • 权限要求:备份用户需具备以下特权:

    • 对备份表:SELECT特权。
    • 对备份视图:SHOW VIEW特权。
    • 对备份触发器:TRIGGER特权。
  • 语法与常用选项

    # 语法1:备份单个数据库
    mysqldump -u 用户名 -p 数据库名 > 备份文件路径
    # 语法2:备份多个数据库
    mysqldump -u 用户名 -p --databases 数据库1 数据库2 ... > 备份文件路径
    # 语法3:备份所有数据库
    mysqldump -u 用户名 -p --all-databases > 备份文件路径
    

    常用选项说明:

    选项作用
    -A/–all-databases备份所有数据库
    –ignore-database = 名称排除指定数据库(需与 - A 配合)
    -B/–databases备份多个数据库,输出包含 USE 语句
    –add-drop-table备份文件中添加 DROP TABLE 语句(还原时先删旧表)
    -X/–lock-all-tables锁定所有表(避免备份时数据修改)
  • 示例

    # 备份inventory数据库到/backup目录
    [root@server ~ 17:25:03]# mysqldump -u root -p inventory > /backup/inventory.dump
    Enter password: # 备份所有数据库
    [root@server ~ 17:25:10]# mysqldump -u root -p --all-databases > /backup/mariadb.dump
    Enter password: 
物理备份

使用 mariabackup 工具

  • 安装工具

    [root@server~]# yum install mariadb-backup
    
  • 执行备份

    [root@server ~ 15:59:08]# tar -pczf mysql.tar.gz /var/lib/mysql
    tar: 从成员名中删除开头的“/”
    [root@server ~ 15:59:28]# ls
    anaconda-ks.cfg  inventory.sql  mysql.tar.gz
    [root@server ~ 16:00:19]# systemctl stop mariadb.service 
    [root@server ~ 16:02:00]# mv /var/lib/mysql /var/lib/mysql.old
  • 权限优化:可创建专用备份用户(授予RELOADLOCK TABLESREPLICATION CLIENT特权),替代 root 执行备份,提升安全性。

执行恢复

注意:恢复操作会覆盖现有数据,若当前数据比备份新,新数据将丢失,建议恢复前备份当前数据。

1. 逻辑备份恢复
# 还原备份到inventory数据库
[root@server ~ 17:27:03]# mysql -u root -p inventory < /backup/inventory.dump
# 还原所有数据库(需确保数据库已存在或备份包含CREATE DATABASE语句)
[root@server ~ 17:27:43]# mysql -u root -p < /backup/mariadb.dump
2. 物理备份恢复

使用mariabackup工具恢复,核心选项包括--copy-back(保留原始备份)和--move-back(移动备份文件并删除原始备份),操作步骤如下:

[root@server ~ 16:04:20]# tar -xf mysql.tar.gz -C /var/lib/mysql/
[root@server ~ 16:13:48]# systemctl start mariadb
[root@server ~ 16:14:07]# systemctl status mariadb
● mariadb.service - MariaDB database serverLoaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)Active: active (running) since 日 2025-09-28 16:14:07 CST; 2s agoProcess: 71168 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, ...16:14:05 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
928 16:14:07 server.cloud systemd[1]: Started MariaDB database server.
http://www.dtcms.com/a/420684.html

相关文章:

  • 桂林企业网站建设珠海网站制作推广公司哪家好
  • Windows 命令提示符键盘快捷键
  • 爱站seo排名可以做哪些网站网页设计师的认识
  • UI自动化框架之Selenium简介(一)
  • 做家装壁纸的网站企业名称注册查询官网入口
  • 站长做什么网站赚钱网络优化网站 site
  • 个人网站建设架构手机网站建设的行情
  • 网站建设运营费用预算承德网站建设咨询
  • 建网站要使用哪些软件南京宜电的网站谁做的
  • 手机网站app生成360建筑网会员
  • dw 做网站的思路网站优化 网站建设公司
  • 网站记录ip 修改济宁市建设工程质量监督站网站
  • 建筑图纸网站黑帽seo优化软件
  • 地产公司做网站维护写代码么6wordpress数据库分离
  • 想做cpa 没有网站怎么做应用市场商店
  • QML之二导航,通过选项卡的按键切换界面
  • JavaWeb 课堂笔记 —— 24 AOP 面向切面编程
  • MYSQL —— 约束和多表查询
  • LAYER_INITCALL宏
  • M| 怪形
  • 在Linux中快速下载Conda的方法
  • 如何做自己的简历网站wordpress文库主题
  • 数据库-锁
  • 解决 Python Crypto安装后依然无效的问题
  • 数字化转型:概念性名词浅谈(第五十六讲)
  • solidworks 实体分割 保存实体 后转换钣金 钣门框出图 结构构件添加 钣金出图教程 平板样式不是展开解决办法 比例激活1比1
  • (Kotlin协程六)协程和RxJava的区别
  • 企业网站制作及cms技术网站开发文档教学
  • 比较好的建立站点如何修改wordpress主题
  • 想让客户公司做网站的话语wordpress s5主题