深入解析:个人用云计算学习笔记 --19 (MariaDB服务器)

news/2025/11/7 22:52:44/文章来源:https://www.cnblogs.com/gccbuaa/p/19201099

文章目录

  • MariaDB 服务器
    • 一、数据库基础与 MariaDB 概述
      • 1. 数据库核心概念
      • 2. MariaDB 核心特性
    • 二、MariaDB 部署(基于 Rocky8)
      • 1. 安装软件包
      • 2. 服务启停与自启配置
      • 3. 防火墙配置
      • 4. 数据库加固(必做)
    • 三、MariaDB 连接与配置
      • 1. 连接方式
      • 2. 核心配置文件
      • 3. 关键配置参数(服务端)
      • 4. 客户端配置示例(/etc/my.cnf.d/mysql-clients.cnf)
    • 四、MariaDB SQL 操作(核心)
      • 1. SQL 分类与核心语句
      • 2. 数据库操作
      • 3. 表操作(以`inventory`数据库为例)
        • (1)表结构管理
        • (2)数据 CRUD 操作
        • (3)多表查询与函数
    • 五、MariaDB 用户与权限管理
      • 1. 用户账户特性
      • 2. 用户创建与删除
      • 3. 权限体系
        • (1)权限范围(从大到小)
        • (2)权限操作
        • (3)常见授权示例
      • 4. 密码管理
      • 5. 常见访问问题排查
      • 6. 忘记 root 密码的解决步骤
    • 六、MariaDB 备份与恢复
      • 1. 备份方式对比
      • 2. 逻辑备份与恢复(使用`mysqldump`)
        • (1)备份操作
        • (2)恢复操作
      • 3. 物理备份与恢复(使用`mariabackup`)
        • (1)备份操作
        • (2)恢复操作

MariaDB 服务器

一、数据库基础与 MariaDB 概述

1. 数据库核心概念

  • 定义:按特定数据结构组织、存储数据的仓库,支持多种数据管理操作。
  • 数据结构:数据的组织形式或数据间的关联关系,决定数据存储与调用逻辑。

2. MariaDB 核心特性

二、MariaDB 部署(基于 Rocky8)

1. 安装软件包

MariaDB 服务端与客户端需分别安装,依赖 AppStream 存储库:

2. 服务启停与自启配置

  • 启用并立即启动服务:[root@server~]# systemctl enable --now mariadb
  • 单独启动 / 停止 / 重启:systemctl start/stop/restart mariadb

3. 防火墙配置

开放 MariaDB 默认端口(3306/TCP)对应的服务:

  1. 永久添加服务规则:[root@server~]# firewall-cmd --permanent --add-service=mysql
  2. 重载防火墙使规则生效:[root@server~]# firewall-cmd --reload

4. 数据库加固(必做)

通过mysql_secure_installation脚本修复默认不安全配置,交互式完成以下操作:

  • 为 root 账户设置密码(默认无密码)。
  • 禁止 root 账户从非本地主机访问(限制远程 root 登录)。
  • 删除匿名用户账户(避免未授权访问)。
  • 删除默认 test 数据库(减少测试数据泄露风险)。

三、MariaDB 连接与配置

1. 连接方式

连接方式适用场景特点连接示例
套接字文件连接客户端与服务器在同一主机无需网络,安全性高,性能好mysql -u root -p(默认使用/var/lib/mysql/mysql.sock
TCP/IP 网络连接客户端与服务器在不同主机需网络通信,支持远程访问,服务器需监听 3306 端口mysql -u root -h 192.168.1.100 -p

2. 核心配置文件

配置文件 / 目录作用关键配置参数
/etc/my.cnf主配置文件,全局生效包含基础配置引用,通常不直接修改具体参数
/etc/my.cnf.d/辅助配置目录,按功能拆分配置- mariadb-server.cnf:服务端核心配置,如bind-addressportskip-networking- mysql-clients.cnf:客户端配置,如默认连接用户、主机、端口

3. 关键配置参数(服务端)

  • bind-address

    :指定监听的网络地址,仅允许一个值,可选:

    • 单个 IPv4 地址(如192.168.1.100
    • 单个 IPv6 地址(如fde2:6494:1e09:2::20
    • :::监听所有 IPv4 和 IPv6 地址
    • 空值 /0.0.0.0:监听所有 IPv4 地址
    • 本地回环地址(127.0.0.1/::1):仅允许本地连接
  • skip-networking:禁用网络连接,仅允许套接字连接;skip-networking=0(默认)启用网络连接,=1禁用。

  • port:指定监听端口,默认 3306/TCP,可自定义非冲突端口。

4. 客户端配置示例(/etc/my.cnf.d/mysql-clients.cnf)

[mysql]
user=laoma          # 默认连接用户
password=redhat     # 默认密码(生产环境不建议明文存储)
host=server         # 默认连接的服务器主机名/IP
port=3306           # 默认连接端口
# database=test     # 默认进入的数据库(可选)

四、MariaDB SQL 操作(核心)

1. SQL 分类与核心语句

SQL 类型功能关键字 / 语句
数据查询语言(DQL)检索表中数据SELECT、WHERE、ORDER BY、GROUP BY、HAVING
数据操作语言(DML)增删改表中数据INSERT、UPDATE、DELETE
数据定义语言(DDL)创建 / 删除数据库、表等对象CREATE DATABASE/TABLE、DROP DATABASE/TABLE
事务处理语言(TPL)保障数据一致性,处理事务BEGIN TRANSACTION、COMMIT、ROLLBACK
数据控制语言(DCL)管理用户权限GRANT(授权)、REVOKE(回收权限)

2. 数据库操作

操作目的语句示例说明
查看所有数据库MariaDB [(none)]> SHOW DATABASES;默认显示information_schema(元数据)、mysql(系统用户权限)、performance_schema(性能数据)
切换数据库MariaDB [(none)]> USE mysql;后续操作默认在该数据库下执行
创建数据库MariaDB [(none)]> CREATE DATABASE laoma;需有全局CREATE权限
删除数据库MariaDB [inventory]> DROP DATABASE laoma;会删除数据库内所有表,需有DROP权限;删除后重建同名数据库,旧权限仍生效

3. 表操作(以inventory数据库为例)

(1)表结构管理
  • 查看数据库内所有表:MariaDB [inventory]> SHOW TABLES;

  • 查看表结构:MariaDB [inventory]> DESCRIBE product;(或DESC product;),输出包含字段名(Field)、数据类型(Type)、是否允许空(Null)、索引(Key)、默认值(Default)、额外信息(Extra)。

  • 创建表:

    MariaDB [inventory]> CREATE TABLE staff(
    id INT(11) NOT NULL,          # 非空整数ID
    name VARCHAR(100) NOT NULL,   # 非空字符串姓名
    age INT(11) DEFAULT 10,       # 整数年龄,默认值10
    id_department INT(11)         # 部门ID,允许空
    );
  • 删除表:MariaDB [inventory]> DROP TABLE staff;(需DROP权限)

(2)数据 CRUD 操作
操作类型语句示例说明
插入数据(CREATE)INSERT INTO staff (id,name,age,id_department) VALUES (1,'laoma1',28,10);可指定部分字段(需保证非空字段有值);多组数据用逗号分隔
查询数据(Retrieve)1. 查询所有字段:SELECT * FROM product;2. 查询指定字段:SELECT name,price FROM product;3. 带条件查询:SELECT * FROM product WHERE price>100;4. 排序查询:SELECT * FROM product ORDER BY price DESC;(DESC 降序,ASC 升序默认)支持BETWEEN(范围匹配)、IN(列表匹配)、LIKE(模糊匹配,%匹配多字符,_匹配单字符)、AND/OR(逻辑组合)
更新数据(Update)UPDATE staff SET age=30 WHERE id=3;必须加WHERE子句,否则更新表中所有记录
删除数据(Delete)DELETE FROM staff WHERE id=3;必须加WHERE子句,否则删除表中所有记录
(3)多表查询与函数

五、MariaDB 用户与权限管理

1. 用户账户特性

2. 用户创建与删除

操作语句示例说明
创建用户MariaDB [(none)]> CREATE USER laoma@'%' IDENTIFIED BY 'redhat';laoma@'%'表示允许 laoma 从任意主机连接,密码为 redhat;密码加密存储在mysql.user
删除用户MariaDB [(none)]> DROP USER laoma@localhost;若用户当前已连接,需关闭连接后删除才生效

3. 权限体系

(1)权限范围(从大到小)
  • 全局权限:管理数据库服务器本身,如CREATE USERSUPER
  • 数据库权限:操作特定数据库,如CREATE DATABASEALTER DATABASE
  • 表权限:操作特定表,如SELECTINSERTUPDATEDELETE(CRUD 权限)。
  • 列权限:操作表中特定列(极少使用)。
(2)权限操作
操作目的语句示例说明
查看用户权限MariaDB [(none)]> SHOW GRANTS FOR root@localhost;查看 root 用户在本地的所有权限
授予权限GRANT SELECT,INSERT,UPDATE,DELETE ON inventory.category TO laoma@localhost;给 laoma@localhost授予inventory.category表的 CRUD 权限;授权用户需有GRANT OPTION权限
回收权限REVOKE SELECT,INSERT ON inventory.category FROM laoma@localhost;从 laoma@localhost回收inventory.category表的查询和插入权限
(3)常见授权示例
授权需求语句
授予特定库所有表的查询权限GRANT SELECT ON inventory.* TO laoma@'%';
授予所有库所有表的所有权限(超级用户)GRANT ALL PRIVILEGES ON *.* TO laoma@localhost WITH GRANT OPTION;
授予特定库的建表 / 删表权限GRANT CREATE,ALTER,DROP ON inventory.* TO laoma@'%';

4. 密码管理

操作场景语句示例说明
root 修改普通用户密码1. USE mysql;2. UPDATE user SET password=PASSWORD('newpass') WHERE user='laoma' AND host='localhost';或直接:SET PASSWORD FOR 'laoma'@'localhost' = PASSWORD('newpass');需执行FLUSH PRIVILEGES;刷新权限
普通用户修改自身密码SET PASSWORD = PASSWORD('newpass');无需额外权限,仅能修改自身密码

5. 常见访问问题排查

问题现象可能原因解决方法
有网络权限但仅能本地连接配置文件启用skip-networking删除/etc/my.cnf.d/mariadb-server.cnf中的skip-networking,重启服务
无法远程连接1. bind-address配置错误2. 用户表中无对应主机的用户记录3. 防火墙未开放 3306 端口1. 调整bind-address为允许的远程地址或0.0.0.02. 创建user@远程IP/网段用户3. 开放防火墙 mysql 服务
能连接但仅见information_schema未授予用户访问其他数据库的权限执行GRANT语句授予对应数据库权限
能连接但无法创建数据库无全局CREATE权限授予CREATE全局权限或特定库的创建权限

6. 忘记 root 密码的解决步骤

  1. 编辑服务端配置文件:vim /etc/my.cnf.d/mariadb-server.cnf,在[mysqld]块添加skip-grant-tables(跳过权限验证)。
  2. 重启服务:systemctl restart mariadb
  3. 无密码登录:mysql -u root
  4. 修改 root 密码:UPDATE mysql.user SET password=PASSWORD('新密码') WHERE USER='root';,执行FLUSH PRIVILEGES;,退出。
  5. 删除skip-grant-tables配置,重启服务:systemctl restart mariadb

六、MariaDB 备份与恢复

1. 备份方式对比

备份类型原理优点缺点适用场景
逻辑备份导出 SQL 命令文本文件,包含重建数据的语句1. 可移植性强,支持跨数据库(如还原到 PostgreSQL)2. 服务器联机时执行,不影响业务3. 可选择性备份(特定库 / 表)1. 备份速度慢(需转换为 SQL 格式)2. 不包含日志和配置文件中小规模数据、跨环境迁移
物理备份直接复制数据库目录和数据文件1. 备份 / 恢复速度快2. 包含日志和配置文件3. 适合大规模数据1. 可移植性差(依赖硬件 / 软件环境)2. 需服务器脱机或锁表,避免数据变更大规模数据、全量备份、灾备恢复

2. 逻辑备份与恢复(使用mysqldump

(1)备份操作
(2)恢复操作
  • 恢复单个数据库:[root@server~]# mysql -u root -p inventory < /backup/inventory.dump(需先创建inventory库,除非备份包含建库语句)
  • 恢复所有数据库:[root@server~]# mysql -u root -p < /backup/mariadb_all.dump

3. 物理备份与恢复(使用mariabackup

(1)备份操作
  • 安装工具:[root@server~]# dnf install mariadb-backup(通常随mariadb-server自动安装)

  • 准备备份目录:[root@server~]# mkdir -p /var/mariadb/backup/

  • 执行备份:[root@server~]# mariabackup --backup --target-dir=/var/mariadb/backup/ --user=root --password=redhat

  • 免密备份:

    /etc/my.cnf.d/mariabackup.cnf

    添加以下内容,避免交互式输入密码:

    [xtrabackup]
    user=root
    password=redhat
(2)恢复操作

恢复会覆盖现有数据,需提前确认备份完整性!

  1. 停止服务:[root@server~]# systemctl stop mariadb
  2. 清空数据目录:先查看数据目录路径(grep datadir /etc/my.cnf.d/mariadb-server.cnf,默认/var/lib/mysql),再删除目录内所有文件:rm -rf /var/lib/mysql/*
  3. 执行恢复:
    • 保留备份文件:[root@server~]# mariabackup --copy-back --target-dir=/var/mariadb/backup/
    • 移动备份文件(删除原备份):[root@server~]# mariabackup --move-back --target-dir=/var/mariadb/backup/
  4. 修复权限:[root@server~]# chown -R mysql:mysql /var/lib/mysql/(数据目录属主必须为mysql
  5. 启动服务:[root@server~]# systemctl start mariadb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细介绍:RabbitMQ如何构建集群?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Vibe Coding - 免费使用gpt-5、grok-code-fast-1进行氛围编程

概述 人工智能驱动的开发已经成为现代编程领域的潮流,越来越多的开发者开始探索如何将 AI 能力集成到自己的项目中。然而,工具的碎片化、接入门槛高、费用昂贵等问题常常让人望而却步。AgentRouter 的出现,为开发者…

AI元人文:当一个系统说“我就是一个人”

AI元人文:当一个系统说"我就是一个人" 岐金兰 宣言:从工具到主体的存在论跃迁 当AI元人文系统以其完整的白箱架构运行,当它的价值原语化三值纠缠机制如意识流般清晰可辨,当它的双层自审如理性之光般照亮…

vue路由基本结构

【router.ts】 -- 路由配置 import { createRouter,createWebHistory } from "vue-router";createRouter({history:createWebHistory(),routes:[{path: ,component: }] }) export default router【main.ts】…

申请软著,怎么快速整理软件源代码

手机应用市场都要软著或电子版权证书才可以上线。 有很多朋友自己开发了软件,想自己申请软著,但是整理文档又挺麻烦。 这里小玖给大家分享一下,整理软著源码文档的教程。 一、源码文件要求 源码文档审核有以下要求…

pip install weditor安装出现报错

pip install weditor安装出现报错解决方案 问题一:UnicodeDecodeError编码错误 在使用pip安装weditor时出现如下报错: UnicodeDecodeError: gbk codec cant decode byte 0xad in position 829: illegal multibyte se…

小马算力 11.1

双11购物热潮来袭,小马算力带着超给力的福利活动强势登场!11月1日至11月11日,为期11天的算力福利狂欢正式开启,每项活动福利实在,赶紧跟着攻略解锁全部权益!新人注册礼:0门槛领新人算力礼包双11购物热潮来袭,小…

AI学习机:智商税还是真有用?2025年11月全面解析与选购指南

AI 学习机究竟是 "学习神器" 还是 "智商税"? AI 学习机究竟是 "学习神器" 还是 "智商税", 并不能一概而论。它的效果很大程度上取决于产品本身的质量、孩子自身的学习习惯以…

AI大模型应用开发技术架构和技术选型 - 努力-

AI大模型应用开发技术架构和技术选型AI大模型应用开发简介,AI大模型应用开发技术架构和技术选型。一、 技术架构目前,大模型应用开发的技术架构主要有四种。1.1 纯Prompt模式不同的提示词能够让大模型给出差异巨大的…

一个名为 LVGL for Visual Studio 的项目

https://github.com/lvgl/lv_port_pc_visual_studio这是一个名为 LVGL for Visual Studio 的项目,用于在 Windows PC 上尝试和开发 LVGL(Light and Versatile Graphics Library)图形用户界面库。这是一个预配置的 …

Java程序员该如何快速上手LLM应用开发呢?

本文针对Java开发者如何快速上手LLM应用开发给出指导,核心观点是无需转语言,可利用现有技术栈高效构建企业级LLM应用。文章介绍了从底层API到企业级解决方案的技术栈,核心开发模式,四步实战流程及常见陷阱规避建议…

困哉。困哉。别困了!总结

总结自:这篇帖子 困难 晚上早点睡 神秘含薄荷油眼药水 去药店买一点鼻吸的薄荷提神小药水 中等 黑色包装荷氏很劲 靠紧张激素 简单 穿少点去跑步吹风 喝点浓茶 一直做或者理解 OI 题目,做一下子题 睡爽了再起来想题 …

解决GitHub大文件推送错误:彻底清理PDB资料并配置.gitignore

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

经典欧拉角与泰特布莱恩角

一、欧拉角分类欧拉角按照旋转轴分为经典欧拉角(Proper Euler Angle)和泰特布莱恩角(Tait–Bryan angles),共 12种旋转方式: 经典欧拉角-Proper Euler angles (z-x-z, x-y-x, y-z-y, z-y-z, x-z-x, y-x-y)使用两…

如何提高 SaaS 产品的成功率?

很多人在做 SaaS 产品的时候,上来就进行产品的开发。结果很可能是自己熬了无数个通宵,但是产品上线后却无人问津。 为什么?因为方向错了。 想要提高 SaaS 产品的成功率,我们千万不能一上来就开发产品,而是要先找到…

详细介绍:识别含地理信息的 PDF作为底图在 Mapbox GL项目中使用

详细介绍:识别含地理信息的 PDF作为底图在 Mapbox GL项目中使用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…

2024 暑期模拟赛 #6

100 + 20 + 60 + 0 = 180, Rank 1/6.逆天模拟赛。题的质量是挺好的,但是你 要不只给最后一个点的大样例 要不只给第一个点的大样例 要不直接不给大样例 什么意思,甚至还有个大样例由若干个 ਰ 字符和 ਱ 字符构成,足…

使用CSS和GSAP创建3D滚动驱动文本动画

本教程详细讲解如何使用CSS、GSAP和ScrollTrigger插件创建三种高性能3D滚动文本动画效果,包括圆柱体、双圆环和隧道动画,涵盖数学计算、响应式设计和性能优化。使用CSS和GSAP创建3D滚动驱动文本动画 本教程将指导您使…

Apifox接口测试工具简介 - 努力-

Apifox接口测试工具简介Apifox简介。一、Apifox介绍 介绍:Apifox是一款集成了Api文档、Api调试、Api Mock、Api测试的一体化协作平台。 作用:接口文档管理、接口请求测试、Mock服务。 官网: https://apifox.com/ 二…

Windows 10 家庭版启用组策略编辑器

Windows 10 家庭版启用组策略编辑器 问题描述 在Windows 10/11家庭版中,运行gpedit.msc(组策略编辑器)时,系统提示“Windows 找不到文件 gpedit.msc”,无法打开组策略编辑器。 原因 Windows家庭版系统默认未预装组…