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

Mariadb服务器

文章目录

  • Mariadb 服务器
    • 一、MariaDB 数据库介绍
      • 1.1 数据库基础概念
        • 1.1.1 数据库定义
        • 1.1.2 数据库种类
        • 1.1.3 关系数据库与 RDBMS
      • 1.2 MariaDB 专属特性
        • 1.2.1 起源与授权
        • 1.2.2 兼容性与数据结构
    • 二、MariaDB 数据库部署(Rocky8 系统)
      • 2.1 安装软件包
      • 2.2 启动服务并设置自启
      • 2.3 配置防火墙
      • 2.4 加固 MariaDB(必做)
      • 2.5 配置文件与连接方式
        • 2.5.1 核心配置文件
        • 2.5.2 关键服务配置参数(`/etc/my.cnf.d/mariadb-server.cnf`的`[mysqld]`块)
        • 2.5.3 客户端配置示例(`/etc/my.cnf.d/mysql-clients.cnf`)
        • 2.5.4 两种连接方式
    • 三、MariaDB SQL 实践
      • 3.1 SQL 基础
        • 3.1.1 SQL 定义
        • 3.1.2 SQL 语句分类
      • 3.2 连接数据库
      • 3.3 数据库操作
        • 3.3.1 查询数据库列表
        • 3.3.2 选择数据库
        • 3.3.3 创建数据库
        • 3.3.4 删除数据库
      • 3.4 表操作(SQL CRUD)
        • 3.4.1 环境准备(导入备份数据)
        • 3.4.2 查询表信息
        • 3.4.3 查询表数据
        • 3.4.4 常用条件操作符
        • 3.4.5 多表查询(关联查询)
        • 3.4.6 SQL 函数(常用聚合函数)
        • 3.4.7 创建表
        • 3.4.8 插入数据(INSERT)
        • 3.4.9 更新数据(UPDATE)
        • 3.4.10 删除数据(DELETE)
        • 3.4.11 删除表(DROP TABLE)
    • 四、MariaDB 用户管理
      • 4.1 用户账户基础
      • 4.2 创建用户(CREATE USER)
        • 4.2.1 用户名格式
        • 4.2.2 创建示例
      • 4.3 权限管理
        • 4.3.1 权限范围
        • 4.3.2 查询用户权限(SHOW GRANTS)
        • 4.3.3 授予权限(GRANT)
        • 4.3.4 回收权限(REVOKE)
        • 4.3.5 删除用户(DROP USER)
        • 4.3.6 修改密码
      • 4.4 常见访问问题排查
      • 4.5 重置 root 密码
    • 五、MariaDB 备份与恢复
      • 5.1 备份方式对比
      • 5.2 执行备份
        • 5.2.1 逻辑备份(mysqldump 工具)
        • 5.2.2 物理备份(mariabackup 工具)
      • 5.3 执行恢复
        • 5.3.1 恢复逻辑备份
        • 5.3.2 恢复物理备份

Mariadb 服务器

一、MariaDB 数据库介绍

1.1 数据库基础概念

1.1.1 数据库定义

数据库是按照特定数据结构组织和存储计算机数据的仓库,可通过多种方法管理其中的数据;数据结构指数据的组织形式或数据之间的联系。

1.1.2 数据库种类
  • 早期主流数据库模型(3 种)

    • 层次式数据库:以层次模型建立,如文件系统。
    • 网状数据库:以网状模型建立,如网络通信系统。
    • 关系型数据库:以二维表模型建立,如图书馆管理系统。
  • 当今互联网企业主流数据库模式(2 种)

    类型特点代表产品
    关系型数据库将复杂数据结构归结为二维表,操作基于表格关联(分类、合并、连接等)Oracle、MySQL、PostgreSQL、MariaDB
    非关系型数据库(NoSQL)意为 “Not Only SQL”,是传统关系型数据库的补充(非替代)Redis(持久化缓存)、Mongodb、Memcached(纯内存)
1.1.3 关系数据库与 RDBMS
  • 关系数据库:将结构化数据存储在相互关联的表中,可轻松组合不同表信息处理数据、生成报告,常用于存储企业业务信息(如库存、销售、财务)。

  • 关系数据库管理系统(RDBMS):管理关系数据库的软件,多数支持通过结构化查询语言(SQL)查找和管理数据。

  • RDBMS 在 LAMP/LNMP 架构中的作用

    1. Linux:提供基础运行环境。
    2. Apache/Nginx:提供 Web 服务器功能。
    3. MariaDB/MySQL/PostgreSQL:存储站点动态数据。
    4. PHP/Python/Perl 等:更新数据库数据并动态构建网页。

1.2 MariaDB 专属特性

1.2.1 起源与授权

MariaDB 是 MySQL 的开源分支,由开源社区维护,采用 GPL 授权许可;开发分支的核心原因是甲骨文收购 MySQL 后存在闭源风险,社区通过分支规避该风险。

1.2.2 兼容性与数据结构
  • 完全兼容 MySQL,包括 API 和命令行,可直接作为 MySQL 的替代品。

  • 数据结构:一个 MariaDB 实例可包含多个database,每个database包含多张二维表,表结构与 Excel 类似:

    • 行:一条记录(元组)。
    • 列:一个字段(属性),需定义数据类型、长度及其他属性。
    • 行列交叉点:具体属性值。

二、MariaDB 数据库部署(Rocky8 系统)

2.1 安装软件包

MariaDB 由 AppStream 存储库提供,需分别安装服务端(提供数据库服务)和客户端(用于连接操作):

# 安装服务端
[root@server ~ 17:07:04]# yum install -y mariadb-server# 安装客户端
[root@client ~ 17:21:47]# yum install -y mariadb

2.2 启动服务并设置自启

# 启用并立即启动mariadb服务
[root@server ~ 17:21:22]# systemctl enable mariadb --now

2.3 配置防火墙

放行 MySQL 服务(默认端口 3306/TCP),允许外部客户端连接:

# 永久添加MySQL服务到防火墙规则
[root@server ~ 17:24:33]# firewall-cmd --permanent --add-service=mysql# 重新加载防火墙规则使配置生效
[root@server ~ 17:24:33]# firewall-cmd --reload 

2.4 加固 MariaDB(必做)

默认配置存在安全风险(如默认 test 数据库、匿名用户),通过mysql_secure_installation工具加固,按交互式提示完成配置:

[root@server ~ 17:27:35]# mysql_secure_installation

需配置的核心项:

  1. 为 root 账户设置密码(首次安装默认无密码)。
  2. 禁止 root 账户从本地主机以外的地址访问。
  3. 删除匿名用户账户。
  4. 删除用于演示的 test 数据库。

2.5 配置文件与连接方式

2.5.1 核心配置文件
配置文件路径作用
/etc/my.cnf主配置文件,用于引用辅助配置文件
/etc/my.cnf.d/*辅助配置文件目录,核心服务配置在/etc/my.cnf.d/mariadb-server.cnf
/etc/my.cnf.d/mysql-clients.cnf客户端配置文件(如默认登录用户、端口)
2.5.2 关键服务配置参数(/etc/my.cnf.d/mariadb-server.cnf[mysqld]块)
参数说明可选值
bind-address指定监听的网络地址(仅支持一个值)单个 IPv4 地址、单个 IPv6 地址、::(所有地址)、空白(所有 IPv4 地址)
skip-networking是否禁用网络连接(仅允许套接字连接)1(禁用)、0(默认,启用)
port监听端口默认 3306,可自定义
2.5.3 客户端配置示例(/etc/my.cnf.d/mysql-clients.cnf
[mysql]
user=wsc          # 默认登录用户名
password=redhat     # 默认登录密码(可选,不建议明文存储)
host=server         # 默认连接的服务器地址
port=3306           # 默认连接端口
# database=test     # 默认进入的数据库(注释为未启用)
2.5.4 两种连接方式
连接方式原理适用场景命令示例
套接字文件通过本地套接字文件通信,无需网络客户端与服务器在同一主机mysql -u root -p
TCP/IP 网络通过网络连接,服务器需监听 3306 端口客户端与服务器在不同主机mysql -u root -h 192.168.1.10 -p

三、MariaDB SQL 实践

3.1 SQL 基础

3.1.1 SQL 定义

SQL(Structured Query Language,结构化查询语言)是 1986 年由美国国家标准局颁布的数据库操作语言,ISO 已将其定为国际标准,是关系数据库的核心操作语言。

3.1.2 SQL 语句分类
分类功能核心关键字 / 语句
数据查询语言(DQL)从表中获取数据(数据检索)SELECT、WHERE、ORDER BY、GROUP BY、HAVING
数据操作语言(DML)增删改表中数据INSERT、UPDATE、DELETE
数据定义语言(DDL)定义 / 删除数据库、表、索引CREATE、DROP、ALTER
事务处理语言(TPL)确保数据更新的一致性BEGIN TRANSACTION、COMMIT、ROLLBACK
数据控制语言(DCL)管理用户权限GRANT、REVOKE

3.2 连接数据库

通过mysql命令连接,支持交互式(结果以 ASCII 表显示)和非交互式(结果以制表符分隔)访问:

# 1. 首次安装无密码时(加固前)
[root@server ~ 17:27:35]# mysql -u root# 2. 加固后(需输入密码)
[root@server ~ 17:36:18]# mysql -u root -p 
# 或指定主机(远程连接)
[root@server ~ 17:36:18]# mysql -u root -h 10.1.8.10 -p

连接成功后将显示以下提示符((none)表示未选择数据库):

MariaDB [(none)]>

3.3 数据库操作

3.3.1 查询数据库列表
MariaDB [(none)]> show databases;

默认数据库说明:

数据库名作用
information_schema存储数据库、表的元数据(如字段类型、表结构)
mysql系统数据库,存储用户信息及权限配置
performance_schema存储数据库服务器的性能指标数据
3.3.2 选择数据库

使用USE语句切换到目标数据库,后续操作默认针对该数据库:

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]>

注意:SQL 语句不区分大小写,但数据库名区分大小写;建议数据库名用小写,SQL 关键字用大写(便于区分)。

3.3.3 创建数据库
# 创建名为wsc的数据库
MariaDB [mysql]> create database wsc;
Query OK, 1 row affected (0.00 sec)# 创建后切换到该数据库
MariaDB [mysql]> use wsc;
Database changed
3.3.4 删除数据库

DROP DATABASE会删除数据库中的所有表及数据库本身,仅拥有DROP权限的用户可执行:

MariaDB [wsc]> drop database wsc;
Query OK, 0 rows affected (0.01 sec)

注意:删除数据库后,该数据库的用户权限不会消失;若重新创建同名数据库,旧权限会自动生效。

3.4 表操作(SQL CRUD)

3.4.1 环境准备(导入备份数据)

先创建数据库,再导入备份文件(示例中备份文件为inventory.dump):

# 1. 命令行创建inventory数据库
[root@server ~ 17:41:13]# mysql -u root -predhat -e 'create database inventory;'# 2. 导入备份文件到inventory数据库
[root@server ~ 17:41:26]# mysql -u root -predhat inventory < inventory.dump
3.4.2 查询表信息
  1. 查询当前数据库的表列表
MariaDB [(none)]> use inventory;
No connection. Trying to reconnect...
Connection id:    15
Current database: *** NONE ***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)
  1. 查询表结构(字段信息)

    使用

    DESCRIBE
    

    (或简写

    DESC
    

    )查看表的字段名、数据类型、是否为空等信息:

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)
3.4.3 查询表数据
  1. 查询所有记录的所有字段
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)
  1. 查询所有记录的特定字段
# 仅查询产品名、价格、库存
MariaDB [inventory]> select name, price, stock from product;
+-------------------------------+---------+-------+
| name                          | price   | stock |
+-------------------------------+---------+-------+
| ThinkServer TS140             |  539.88 |    20 |
| ThinkServer RD630             | 2379.14 |    20 |
| RT-AC68U                      |  219.99 |    10 |
| X110 64GB                     |   73.84 |   100 |
| Dell XPS 15                   | 1299.99 |    15 |
| HP Pavilion 14                |  799.99 |    25 |
| Samsung 27-inch 4K            |  349.99 |    30 |
| Logitech Mechanical K845      |   89.99 |    50 |
| Acer Swift 3                  |  699.99 |    18 |
| Microsoft Surface Pro 9       | 1199.99 |    12 |
| Kingston A400 240GB           |   49.99 |    80 |
| Asus TUF Gaming VG27AQ        |  399.99 |    22 |
| Dell OptiPlex 7010            |  899.99 |    16 |
| HP Z2 Mini Workstation        | 1499.99 |     8 |
| Logitech G502 Hero            |   79.99 |    40 |
| HP LaserJet Pro M428fdw       |  499.99 |    12 |
| Samsung T7 Shield 2TB         |  199.99 |    35 |
| Kingston Fury Beast 16GB DDR4 |   44.99 |    60 |
| Dell Ultrasharp U2419H        |  299.99 |    20 |
| Acer Nitro AN515-57           |  999.99 |    14 |
+-------------------------------+---------+-------+
20 rows in set (0.00 sec)
  1. 带条件查询(WHERE 子句)
# 查询价格大于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)
3.4.4 常用条件操作符
操作符功能示例
=等于price = 200
<>/!=不等于price != 200
>/<大于 / 小于price > 200price < 200
>=/<=大于等于 / 小于等于price >= 200price <= 200
BETWEEN A AND B在 A 和 B 之间(含边界)id BETWEEN 1 AND 5
IN (值1,值2...)匹配列表中的任意值id IN (1,3,5)
LIKE模糊匹配(%表多字符,_表单字符)name LIKE '%server%'
AND/OR逻辑与 / 逻辑或price > 100 AND stock > 5
ORDER BY 字段按字段排序(DESC降序,默认升序)ORDER BY price DESC
3.4.5 多表查询(关联查询)

通过表间的关联字段(如id_categoryid_manufacturer)组合多个表的数据:

  1. 查询 “Servers” 分类下的产品名和价格
MariaDB [inventory]> select product.name,product.price -> from product, category-> where product.id_category = category.id -> and category.name = 'server';
Empty set (0.00 sec)
  1. 查询 “Lenovo” 厂商的产品名和价格
MariaDB [inventory]> select product.name,product,price-> from product, manufacturer-> where product.id_manufacturer = manufacturer.id-> and manufacturer.name = 'Lenovo';
3.4.6 SQL 函数(常用聚合函数)
函数功能示例
AVG(字段)计算字段平均值SELECT AVG(price) FROM product;(产品平均价格)
MAX(字段)取字段最大值SELECT MAX(price) FROM product;(最高产品价格)
MIN(字段)取字段最小值SELECT MIN(price) FROM product;(最低产品价格)
SUM(字段)计算字段总和SELECT SUM(stock) FROM product;(总库存)
COUNT(字段)统计非空字段的记录数SELECT COUNT(name) FROM product;(产品总数)
3.4.7 创建表
MariaDB [inventory]> create table staff( id int(11) not null, name varchar(100) not null, age int(11) default 10, id_department int(11) ); 
Query OK, 0 rows affected (0.00 sec)
3.4.8 插入数据(INSERT)
# 1. 插入完整字段(按字段顺序)
MariaDB [inventory]> insert into staff (id, name, age, id_department)    -> values (1, 'wsc1', 28, 10);
Query OK, 1 row affected (0.00 sec)# 2. 插入部分字段(未指定字段需有默认值或允许为空)
MariaDB [inventory]> insert into staff (id, name, age) values (2, 'wsc2', 10);
Query OK, 1 row affected (0.00 sec)# 3. 插入仅必填字段(其他字段用默认值)
MariaDB [inventory]> insert into staff (id, name) values (3, 'wsc3');Query OK, 1 row affected (0.00 sec)
3.4.9 更新数据(UPDATE)
# 更新指定记录(带WHERE子句,仅更新id=3的员工年龄)
MariaDB [inventory]> update staff set age =30 where id = 3;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0# 警告:不带WHERE子句会更新表中所有记录(谨慎执行)
3.4.10 删除数据(DELETE)
# 删除指定记录(带WHERE子句,仅删除id=3的员工)
MariaDB [inventory]> delete from staff where id = 3;
Query OK, 1 row affected (0.00 sec)# 警告:不带WHERE子句会删除表中所有记录(谨慎执行)
3.4.11 删除表(DROP TABLE)
# 删除staff表(表中所有数据也会被删除)
MariaDB [inventory]> drop table staff;
Query OK, 0 rows affected (0.00 sec)

四、MariaDB 用户管理

4.1 用户账户基础

  • MariaDB 用户与 Linux 系统用户独立(即使同名,密码和权限也互不影响)。
  • 支持通过 PAM 插件集成 Linux 系统用户(本文档不涉及该配置),建议分开管理数据库用户和系统用户。
  • 创建用户需具备的权限:root用户、全局CREATE USER特权、mysql数据库的INSERT特权。

4.2 创建用户(CREATE USER)

4.2.1 用户名格式

用户名格式为user_name@host_namehost_name指定用户可连接的主机,支持通配符,示例:

用户名说明
wsc@'%'允许从任意主机连接
wsc@'localhost'仅允许从本地主机(127.0.0.1)连接
wsc@'10.1.8.%'允许从 10.1.8.0/24 网段连接
wsc@'10.1.8.11'仅允许从 10.1.8.11 这台主机连接
4.2.2 创建示例
# 创建wsc用户,允许从任意主机连接,密码为redhat
MariaDB [inventory]> create user wsc@'%' identified by '123';

4.3 权限管理

4.3.1 权限范围
权限范围作用示例权限
全局特权管理数据库服务器本身CREATE USER、DROP USER
数据库特权操作特定数据库CREATE DATABASE、USE 数据库名
表特权操作特定表(CRUD)SELECT、INSERT、UPDATE、DELETE
列特权操作表中的特定列(较少用,如仅允许更新age列)
4.3.2 查询用户权限(SHOW GRANTS)
# 查询root用户本地连接的权限
MariaDB [inventory]> show grants for root@localhost;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION                                                                           |
+----------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
4.3.3 授予权限(GRANT)
  • 语法:GRANT 权限列表 ON 数据库.表 TO 用户名@主机;

    # 1. 授予laoma用户本地访问inventory.category表的CRUD权限
    MariaDB [inventory]> grant select, insert, update, delete-> on inventory.category-> to wsc@localhost;
    Query OK, 0 rows affected (0.00 sec)# 2. 授予wsc用户访问inventory数据库所有表的查询权限
    MariaDB [inventory]> grant select on inventory.* to wsc@'%';
    Query OK, 0 rows affected (0.00 sec)# 3. 授予laoma用户所有数据库所有表的所有权限(超级用户,类似root)
    MariaDB [inventory]> grant all privileges on *.* to wsc@'%' with grant option;
    Query OK, 0 rows affected (0.00 sec)
4.3.4 回收权限(REVOKE)
  • 语法:REVOKE 权限列表 ON 数据库.表 FROM 用户名@主机;

    # 回收laoma用户本地访问inventory.category表的删除权限
    MariaDB [inventory]> revoke delete on inventory.category from wsc@localhost;
    Query OK, 0 rows affected (0.00 sec)
4.3.5 删除用户(DROP USER)
# 删除laoma用户本地连接的账户
MariaDB [inventory]> drop user wsc@localhost;
Query OK, 0 rows affected (0.00 sec)

注意:若删除当前正在连接的用户,需关闭该用户的连接后,删除才会生效。

4.3.6 修改密码
  1. root 用户修改普通用户密码
# 方式1:更新mysql.user表(需刷新权限)
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 changedMariaDB [mysql]> update user set password = PASSWORD('123')-> where user = 'wsc' and host = '%';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0# 方式2:直接设置(无需刷新权限)
MariaDB [mysql]> set password for wsc@'%' = PASSWORD('123');
Query OK, 0 rows affected (0.00 sec)

4.4 常见访问问题排查

问题现象原因解决方案
有权限,但仅能本地通过mysql命令连接配置文件中启用了skip-networking(禁用网络连接)删除/etc/my.cnf.d/mariadb-server.cnf中的skip-networking,重启 mariadb 服务
能本地连接,无法远程连接1. bind-address配置为仅本地地址(如 127.0.0.1)2. 用户表中无该用户的远程主机条目1. 修改bind-address0.0.0.0(允许所有 IPv4 地址)2. 创建用户时指定host%或远程主机 IP(如laoma@'%'
能连接,但仅可见information_schema数据库未授予用户访问其他数据库的权限GRANT授予用户对应数据库的权限(如GRANT SELECT ON inventory.* TO laoma@'%'
忘记 root 密码无法通过正常方式登录参考 4.5 节 “重置 root 密码” 步骤

4.5 重置 root 密码

  1. 编辑服务配置文件,添加skip-grant-tables(跳过权限验证):

    [root@server ~ 17:41:56]# vim /etc/my.cnf.d/mariadb-server.cnf[mysqld]
    skip-grant-tables  # 添加此行
    
  2. 重启 mariadb 服务:

    [root@server ~ 18:42:47]# systemctl restart mariadb
  3. 无密码登录并修改 root 密码:

    [root@server ~ 18:43:45]# mysql -u root
    error: Found option without preceding group in config file: /etc/my.cnf.d/mariadb-server.cnf at line: 1
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 2
    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)]> update mysql.user set password = PASSWORD('123')-> where user = 'root';
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 3  Changed: 0  Warnings: 0MariaDB [(none)]> exit
    Bye
  4. 注释skip-grant-tables,重启服务:

    bash

    [root@server ~ 18:45:27]# vim /etc/my.cnf.d/mariadb-server.cnf
    # skip-grant-tables  # 注释此行
    [root@server ~ 18:46:16]# systemctl restart mariadb

五、MariaDB 备份与恢复

5.1 备份方式对比

备份类型原理特点适用场景
逻辑备份导出数据库为包含 SQL 命令的文本文件1. 速度较慢2. 可移植性高(支持跨数据库、跨平台)3. 服务器联机执行4. 不包含日志和配置文件中小规模数据库、跨平台迁移
物理备份复制数据库原始目录和文件1. 速度快2. 可移植性低(需相同软硬件环境)3. 服务器需脱机或锁表4. 可包含日志和配置文件大规模数据库、完整系统恢复

5.2 执行备份

5.2.1 逻辑备份(mysqldump 工具)
  • 语法:mysqldump [选项] 数据库 [表] > 备份文件路径

  • 常用选项:

    选项功能
    -u指定登录用户名
    -p提示输入密码
    -A/--all-databases备份所有数据库
    -B/--databases备份多个数据库,输出含USE 数据库语句
    --add-drop-table备份中添加DROP TABLE语句(恢复前删除旧表)
  • 备份示例:

    bash

    # 1. 备份单个数据库(inventory)
    [root@server~]# mysqldump -u root -p inventory > /backup/inventory.dump# 2. 备份所有数据库
    [root@server~]# mysqldump -u root -p --all-databases > /backup/all_mariadb.dump
    
5.2.2 物理备份(mariabackup 工具)

mariabackupmariadb-backup包提供,支持完整物理备份:

# 1. 安装mariabackup(若未安装)
[root@server ~ 18:46:44]# yum install -y mariadb-backup# 2. 创建备份目录
[root@server ~ 18:47:08]# mkdir -p /var/mariadb/backup# 3. 执行备份(指定用户、密码和目标目录)
[root@server ~ 18:48:27]#  mariabackup --backup --target-dir /var/mariadb/backup \
> --user root --password redhat

5.3 执行恢复

5.3.1 恢复逻辑备份

通过mysql命令导入备份文件:

# 1. 恢复单个数据库(inventory)
[root@server ~ 18:49:59]# mysql -u root -p inventory < /backup/inventory.dump# 2. 恢复所有数据库(需确保数据库结构兼容)
[root@server ~ 18:50:00]# mysql -u root -p < /backup/all_mariadb.dump
5.3.2 恢复物理备份

mariabackup支持两种恢复方式:--copy-back(保留原始备份)、--move-back(移动备份文件,删除原始备份),步骤如下:

# 1. 停止mariadb服务
[root@server ~ 18:50:39]# systemctl stop mariadb# 2. 确认数据目录(默认/var/lib/mysql)
[root@server ~ 18:50:50]# grep datadir /etc/my.cnf.d/mariadb-server.cnf
datadir=/var/lib/mysql# 3. 清空数据目录(避免残留数据冲突)
[root@server ~ 18:51:16]# rm -rf /var/lib/mysql/*# 4. 执行恢复(保留原始备份)
[root@server ~ 18:51:37]#  mariabackup --copy-back --target-dir /var/mariadb/backup# 5. 修复数据目录权限(改为mysql用户所有)
[root@server ~ 18:52:00]# chown -R mysql:mysql /var/lib/mysql# 6. 启动mariadb服务
[root@server ~ 18:52:21]# systemctl start mariadb
http://www.dtcms.com/a/419170.html

相关文章:

  • 现代Web存储技术(三):配额监控与自动化清理机制
  • 高并发系统的海量数据处理架构
  • 苹果群控系统游戏运营如何实现自动执行任务
  • NXP - 在MCUXpresso IDE中查看编译日志文件的方法
  • 荣耀官方网站郑州粒米seo外包
  • UI自动化框架之Selenium(一)
  • AI编程:自动化代码生成的实践
  • 网站免费建站ppa企业网站托管和网站建设服务商
  • LSTM自然语言处理情感分析项目(二)加载数据集
  • 自定义渲染管线 Custom Render Pipeline
  • 【循环神经网络3】门控循环单元GRU详解
  • 邯郸网站设计做网站的动态图片
  • 建网站要花钱吗网络建设推广
  • 【Java并发】揭秘Lock体系 -- 深入理解AbstractQueuedSynchronizer(AQS)
  • 3.8 数据链路层设备 (答案见原书 P122)
  • 轻松修复 WordPress 的“缺少临时文件夹”错误
  • PHP智能开发工具PhpStorm v2025.2全新上线——支持PHPUnit 12等
  • MySQL 事务和 Spring 事务
  • 怎样免费建立网站广州工商注册查询系统官网
  • 广州新建站wordpress 缩略图 oss
  • JVM 目录
  • Unity学习之常用的数据结构
  • 【C++实战(51)】C++11新特性实战:移动语义与右值引用,解锁性能密码
  • 做宠物的网站有哪些做任务 网站
  • python做网站缺点公司建设官方网站
  • 【笔记】1.1 化学电源的组成
  • 【面试题】HTTP与HTTPS的区别
  • 虚幻引擎|UE5制作DeepSeek插件并打包发布
  • 做链接的网站深圳门窗在哪里网站做推广
  • destoon 网站搬家做app找什么公司