Linux服务器配置(mariadb服务器)

mariadb服务器

数据库与 MariaDB 基础认知

数据库核心概念

  • 数据库是按特定数据结构组织、存储数据的仓库,数据结构指数据的组织形式或数据间联系。
  • 早期流行层次式、网状、关系型三种数据库模型,当今互联网企业常用关系型与非关系型(NoSQL)数据库。关系型数据库将数据归结为二维表,通过对表格运算管理数据,如 Oracle、MySQL 等;NoSQL 数据库是传统数据库的补充,典型有 Redis、Mongodb 等。
  • 关系数据库管理系统(RDBMS)用于管理关系数据库,多数支持用结构化查询语言(SQL)管理数据,常与 Linux、Web 服务器、编程语言等构建 LAMP(LNMP)解决方案,在众多 Web 应用中起关键作用。

MariaDB 特性

  • 是 MySQL 数据库的分支,由开源社区维护,采用 GPL 授权许可,因甲骨文收购 MySQL 后存在闭源风险而开发。
  • 完全兼容 MySQL 的 API 和命令行,可轻松替代 MySQL,其管理系统可包含多个 database,每个 database 又包含多张表,表采用类似 Excel 工作表的二维表格存储数据,表的行是元组(记录),列是字段(属性),行列交叉处是属性值。

MariaDB 部署与基础配置

服务端配置

bash 复制代码
#安装服务端和客户端
[root@server ~ 16:16:02]# yum install -y mariadb
[root@server ~ 16:16:02]# mariadb-server

#启动服务
[root@server ~ 16:16:07]# systemctl enable mariadb.service --now

#配置防火墙
[root@server ~ 17:14:17]# firewall-cmd --permanent --add-service=mysql
[root@server ~ 17:14:19]# firewall-cmd --reload

加固mariadb

MariaDB数据库默认具有test数据库和一些不安全的配置。运行

mysql_secure_installation修改这些配置。

bash 复制代码
[root@server ~ 17:14:17]# mysql_secure_installation 

交互式提示您更改,包括

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

配置 MariaDB

默认情况下,MariaDB 侦听系统中所有网络地址上 3306/TCP 端口。MariaDB 配置文件:

  • 主配置文件 /etc/my.cnf

  • 辅助配置文件 /etc/my.conf.d/*

    /etc/my.cnf.d/mariadb-server.cnf 文件是数据库服务主要配置。在该文件的 **[mysqld] **块中可以定义以下参数:

  • bind-address,该指令指定 MariaDB 用来侦听客户端连接的网络地址。只能输入一个选项。可能的选项包括:

    • 单个 IPv4 地址。
    • 单个 IPv6 地址。
    • :: 连接到所有可用地址(IPv6 和 IPv4)。
    • 对于所有 IPv4 地址,保留为空白(或设置为 0.0.0.0)。
    • 如果只希望本地客户端访问 MariaDB,则可以使用 127.0.0.1 或**::1 **作为网络地址。
  • skip-networking ,如果在配置文件的 [mysqld] 部分中设置 skip-networking 或 skip-networking = 1 ,则将禁用网络连接,并且客户端必须使用套接字文件与 MariaDB 通信。如果您设置 skip-networking = 0(默认值),MariaDB 会侦听网络连接。

  • port ,您可以使用此设置指定 3306/TCP 以外的网络端口。

bash 复制代码
[root@client ~ 14:36:41]# vim  /etc/my.cnf.d/mysql-clients.cnf 

[clienr]
user=wyb
password=123456
host=server
port=3306

MariaDB 中 SQL

描述 SQLSQL

(Structured Query Language),结构化查询语言,是 1986 年 10 月由美国国家标准局颁布的数据库语言。国际标准化组织(ISO)也颁布了 SQL 国际标准。结构化查询语言是关系数据库最重要的操作语言,它的影响已经超出数据库领域,得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件开发工具中嵌入 SQL 的语言等。SQL 语句可简单分为如下几类:

  • 数据查询语言(DQL: Data Query Language):也称为 "数据检索语句",用以从表中获得数据,保留字 SELECT WHERE,ORDER BY,GROUP BY 和 HAVING。
  • 数据操作语言(DML: Data Manipulation Language):其语句包括动词 INSERT,UPDATE 和 DELETE。
  • 数据定义语言(DDL):其语句包括动词 CREATE 和 DROP。例如,在数据库中创建新表(CREATE TABLE)、删除表(DROP TABLE),为表添加索引等。
  • 事务处理语言(TPL):它的语句能确保被 DML 语句影响的表的所有行及时得以更新。TPL 语句包括 BEGIN TRANSACTION,COMMIT 和 ROLLBACK。
  • 数据控制语言(DCL):它的语句通过 GRANT 或 REVOKE 获得许可,确定单个用户和用户组对数据库对象的访问。

连接数据库

mariadb 软件包提供了命令 mysql,该命令支持对 MariaDB 数据库的交互式和非交互式访问。

  • 交互式执行时,结果以 ASCII 表的格式显示。
  • 非交互执行时,结果以制表符分隔的格式显示。

示例:

bash 复制代码
[root@server ~ 17:27:14]# mysql -u root -h localhost -p
[root@server ~ 17:27:14]# mysql -u root -h localhost -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (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)]> 

数据库操作

bash 复制代码
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

使用数据库

​ sql语句不区分大小写,但数据库名称区分大小写

bash 复制代码
#创建数据库
MariaDB [(none)]> create database wyb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use wyb ;
Database changed
MariaDB [wyb]> use mysql 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
#drop删除数据库需要权限,并且不会更改数据库的用户权限。
MariaDB [mysql]> drop database wyb ;
Query OK, 0 rows affected (0.00 sec)

表操作

bash 复制代码
#环境准备
[root@server ~ 17:37:41]# mysql -uroot -p123456 inventory < inventory.sql


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

Database changed
#查询表
 MariaDB [inventory]> show tables;
+---------------------+
| Tables_in_inventory |
+---------------------+
| category            |
| manufacturer        |
| product             |
+---------------------+
3 rows in set (0.00 sec)

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)


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)


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)

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



#多表查询
MariaDB [inventory]> select product.name,product.price from peoduct,category where product.id_category = category.id and category.name= 'Servers';


#函数
MariaDB [inventory]> select avg(price) from product ;
+-------------------+
| avg(price)        |
+-------------------+
| 631.3844999999999 |
+-------------------+
1 row in set (0.00 sec)


#创建表
MariaDB [inventory]> CREATE TABLE staff( id INT(11) NOT NULL, name VARCHAR(100) NOT NULL, age INT(11) DEFAULT 10, id_department INT(11) );
MariaDB [inventory]> INSERT INTO staff (id,name,age,id_department) VALUES (1,'wyb1',28,10); MariaDB [inventory]> INSERT INTO staff (id,name,age) VALUES(2,'wyb2',20); MariaDB [inventory]> INSERT INTO staff (id,name) VALUES (3,'wyb3');

#更新删除记录
MariaDB [inventory]> UPDATE staff SET age=30 WHERE id=3; 
MariaDB [inventory]> UPDATE staff SET age=30

MariaDB [inventory]> DELETE FROM staff WHERE id=3 ;
MariaDB [inventory]> DELETE FROM staff ;

#如果使用不带 WHERE 子如果使用不带 WHERE 子句的 DELETE 子句,则表中的所有记录都会删除。句的 UPDATE,则表中的所有记录都会更新。

管理MariaDB用户

创建用户账户

bash 复制代码
MariaDB [mysql]> select host,user,password from user 
    -> ;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| ::1       | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+-------------------------------------------+


#忘记root密码
1编辑 /etc/my.cnf.d/mariadb-server.cnf 配置文件,在 [mysqld] 下添加 skip-grant-tables=1。
2重启 mariadb 服务。
执行 mysql -u root 命令进入 mysql 命令行,修改 root 用户密码。

1 [root@server ~]# mysql -u root
2 MariaDB [(none)]> UPDATE mysql.user SET password=PASSWORD('新密码') where USER='root';

3 MariaDB [(none)]> exit
把 /etc/my.cnf.d/mariadb-server.cnf 配置文件中的 skip-grant-tables=1 注释掉,然后重启 mariadb 服务

备份和恢复

备份操作

逻辑备份
使用mysqldump命令
bash 复制代码
# 备份单个数据库
mysqldump -u 用户名 -p 数据库名 > 备份文件路径
# 备份多个数据库
mysqldump -u 用户名 -p --databases 数据库1 数据库2 ... > 备份文件路径
# 备份所有数据库
mysqldump -u 用户名 -p --all-databases > 备份文件路径

示例:

bash 复制代码
# 备份inventory数据库到/backup目录
[root@server ~ 18:11:03]# mysqldump -u root -p inventory > /backup/inventory.dump
Enter password: 

# 备份所有数据库
[root@server ~ 18:11:13]# mysqldump -u root -p --all-databases > /backup/mariadb.dump
Enter password:
物理备份
使用mariabackup工具
bash 复制代码
#安装工具
[root@server ~ 18:12:46]# yum install  -y mariadb-backup

执行:

bash 复制代码
[root@server ~ 18:13:40]# tar -pczf mysql.tar.gz /var/lib/mysql
[root@server ~ 18:13:43]# ls
[root@server ~ 18:13:45]# systemctl stop mariadb.service 
[root@server ~ 18:13:47]# mv /var/lib/mysql /var/lib/mysql.old

数据恢复

逻辑备份
bash 复制代码
# 还原备份到inventory数据库
[root@server ~ 18:14:56]# mysql -u root -p inventory < /backup/inventory.dump
# 还原所有数据库(需确保数据库已存在或备份包含CREATE DATABASE语句)
[root@server ~ 18:14:59]# mysql -u root -p < /backup/mariadb.dump
物理备份
bash 复制代码
[root@server ~ 18:15:28]# tar -xf mysql.tar.gz -C /var/lib/mysql/
[root@server ~ 18:15:30]# systemctl start mariadb
[root@server ~ 18:15:40]# systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2025-09-28 18:15:40 CST; 2s ago
  Process: 71168 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, 

systemctl start mariadb

root@server \~ 18:15:40\]# systemctl status mariadb ● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) since 日 2025-09-28 18:15:40 CST; 2s ago Process: 71168 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, ``` ```

相关推荐
忧郁的橙子.2 小时前
k8s 主节点重启后 从节点 get 异常
linux·运维·服务器
Raymond运维2 小时前
Apache介绍和安装
linux·运维·apache
半梦半醒*3 小时前
nginx的访问控制、用户认证、https
linux·运维·服务器·nginx·https·centos
Skrrapper3 小时前
ubuntu?centos?还是 redhat?Linux 系统选哪个?
linux·ubuntu·centos
安审若无4 小时前
解决 sqlplus / as sysdba 登录缓慢问题
运维·服务器·数据库
进击的_鹏4 小时前
【Linux】权限
linux·服务器
ZhiqianXia5 小时前
Linux 内核开发 的核心知识点
linux
RoboWizard5 小时前
移动固态硬盘插入电脑后提示“需要格式化”或“文件系统损坏”如何修复?
linux·运维·服务器
m0_619731195 小时前
linux配置数据库
linux·运维·数据库