详细介绍:5. MariaDB 数据库管理

news/2026/1/23 11:56:53/文章来源:https://www.cnblogs.com/ljbguanli/p/19521398

详细介绍:5. MariaDB 数据库管理

MariaDB 数据库管理

个人笔记:

#日志排故
tail -f /var/log/mariadb/mariadb.log

一、MariaDB数据库基础概念

1.1 数据库定义

数据库,是一个存放计算机数据的仓库 , 是按照一定数据结构组织和存储计算机数据的仓库,可通过多种方法管理其中的数据。

1.2 数据结构

指数据的组织形式或数据之间的联系。

1.3 数据库种类

1.4 关系数据库

关系数据库将结构化数据存储在相互关联的表中,便于组合信息处理和生成报告。关系数据库管理系统(RDBMS)用于管理关系数据库,多数支持使用结构化查询语言(SQL)查找和管理数据。

许多组织用关系数据库存储业务信息,如库存、销售和财务。很多支持动态内容的Web应用基于LAMP(LNMP)解决方案构建:

  • Linux:提供基本环境。
  • Apache HTTPS Server或Nginx:提供Web服务器。
  • MariaDB、MySQL或其他关系数据库(如PostgreSQL):存储站点数据。
  • Web服务器运行的编程语言(如PHP、Python等):更新数据库数据并动态构建网页。

1.5 MariaDB 介绍

1.基本概述

MariaDB是MySQL数据库的一个分支,由开源社区维护,采用GPL授权许可。因甲骨文公司收购MySQL后有闭源风险,MySQL开源社区分支出MariaDB。它完全兼容MySQL,包括API和命令行,可作为MySQL的替代品。

MariaDB可包含多个database,每个database包含多张表。

在这里插入图片描述

2 表的相关概念

关系数据库的表类似Excle工作表:

在这里插入图片描述

二、MariaDB 部署

2.1 安装MariaDB

根据你的需求,服务端和客户端的安装操作本身与主机名(serverclient)无关,仅需在对应的服务器上执行相应命令即可:

  1. 在服务端服务器(主机名 [root@server ~])上安装服务端
    执行你提到的服务端安装命令:

    root@server ~ 16:22:48]# yum install -y mariadb-server

    安装完成后,还需启动服务并设置开机自启(可选但推荐):

    [root@server ~ 16:28:53]# systemctl start mariadb   # 启动服务
    [root@server ~ 16:34:08]# systemctl enable mariadb --now  # 设置开机自启
  2. 在客户端服务器(主机名 [root@client ~])上安装客户端
    执行你提到的客户端安装命令:

    [root@client ~ 16:15:59]# yum install -y mariadb

安装完成后,客户端可通过 mysql 命令连接服务端(需确保服务端已启动且网络/防火墙允许连接),例如:(需后续配置)

# 在客户端执行,连接服务端(假设服务端IP为 10.1.8.10)
[root@client ~ 16:37:01]# mysql -h 10.1.8.10 -u lzh -p

2.2 启用并启动服务

[root@server ~]# systemctl enable mariadb --now

2.3 配置防火墙

[root@server ~]# firewall-cmd --permanent --add-service=mysql
[root@server ~]# firewall-cmd --reload

2.4 加固 MariaDB

MariaDB默认有test数据库和不安全配置,运行mysql_secure_installation修改,包括:

  • 为root帐户设置密码。
  • 禁止root帐户从本地主机外部访问数据库。
  • 删除匿名用户帐户。
  • 删除用于演示的test数据库。
[root@server ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
mariadbS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n]
... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n]
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n]
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n]
... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
[root@server ~ 10:18:41]# mysql -u root
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
mariadb version: 5.5.68-MariaDB MariaDB mariadb
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)]> exit
Bye

2.5 连接 MariaDB

  • 通过套接字文件连接:客户端与服务器在同一台计算机时使用,更安全,但使用数据库的服务需在MariaDB服务器上运行,影响性能。
[root@server ~ ]# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
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)]>
  • 通过TCP/IP网络连接:远程服务器与MariaDB服务器在不同主机时使用,服务器需配置侦听3306/TCP端口。
    • 数据库服务器本机创建连接用户:
[root@server ~ 16:41:07]# mysql -u roott
#创建连接用户
MariaDB [(none)]> create user lzh@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  • 客户端测试:
[root@client ~ 16:44:59]# mysql -u lzh -h server -p123 

2.6 配置 MariaDB

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

  • 配置文件
    • 主配置文件:/etc/my.cnf
    • 辅助配置文件:/etc/my.conf.d/*
  • /etc/my.cnf.d/mariadb-server.cnf 文件中[mysqld]块的主要参数
    • bind-address:指定侦听的网络地址,可设为单个IPv4/IPv6地址、::(所有地址)、空白(所有IPv4地址)、127.0.0.1或::1(仅本地访问)。
    • port:指定除3306/TCP外的网络端口。
    • skip-networking:设为1禁用网络连接,客户端需用套接字文件通信;设为0(默认)则侦听网络连接。
  • 客户端配置示例:
[root@client ~ 16:56:44]# vim /etc/my.cnf.d/mysql-clients.cnf
#在client客户端输入mysql,可直连接lzh用户的数据库
[mysql]
user=lzh         #登录用户名
password=123     #登录密码
host=server      #服务器主机名(需解析)
port=3306        #服务端口(默目标库认)
# database=test  #目标库

三、MariaDB 中 SQL

4.1 SQL 描述

SQL(Structured Query Language,结构化查询语言)是1986年10月由美国国家标准局颁布的数据库语言,国际标准化组织(ISO)也颁布了SQL国际标准。它是关系数据库最重要的操作语言,影响超出数据库领域。

SQL语句分类:

4.2 连接数据库

mariadb软件包提供mysql命令,支持交互式和非交互式访问MariaDB。

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

示例:

[root@server ~ 17:02:08]# mysql -u root -h localhost -p

首次安装时,MariaDB默认root用户无需密码访问 ,若使用 -p ,则会被拒绝:

[root@server ~ 17:02:32]# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.17-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)]>
[root@server ~ 17:02:38]# mysql -u root -p 
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

交互式SQL语句执行时,MariaDB提示符在方括号中显示当前选择的数据库。

4.3 数据库操作

4.3.1 查询数据库列表
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.019 sec)

数据库说明:

  • mysql:系统数据库,保存数据库用户及访问权限等信息。
  • INFORMATION_SCHEMA:保存数据库或数据表的元数据信息。
  • PERFORMANCE_SCHEMA:保存数据库服务器性能信息。
4.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 -A
Database changed
MariaDB [mysql]>

SQL语句不区分大小写,但数据库名称区分大小写。通常数据库名称全为小写,SQL语句全为大写,以区分语句与目标或参数。

4.3.3 创建数据库
MariaDB [mysql]> CREATE DATABASE lzh;
Query OK, 1 row affected (0.010 sec)
MariaDB [mysql]> USE lzh;
Database changed
4.3.4 删除数据库

**DROP DATABASE语句删除数据库中的所有表和数据库,会破坏所有数据,只有具有DROP**特权的用户可执行,不改变用户特权,重新创建同名数据库时旧权限仍有效。

MariaDB [(none)]> DROP DATABASE lzh;
Query OK, 0 rows affected (0.006 sec)

4.4 表操作

SQL的CRUD操作(create添加数据、read读取数据、update修改数据、delete删除数据)。

4.4.1 环境准备

拖入 [inventory.dump](5. Mariadb 服务器.images\inventory.dump) (需要的评论 , 私发给你)

# 导入备份
[root@server ~]# mysql -uroot  -e 'create database inventory;'
[root@server ~]# mysql -uroot  inventory < inventory.dump
4.4.2 查询表
查询表列表
# 查询表列表
MariaDB [(none)]> USE inventory;
MariaDB [inventory]> SHOW TABLES;
+---------------------+
| Tables_in_inventory |
+---------------------+
| category            |
| manufacturer        |
| product             |
+---------------------+
3 rows in set (0.001 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.008 sec)
MariaDB [inventory]>

输出各列含义:

  • Field:属性名称。
  • Type:属性数据格式,如stock为最多11位数字的整数。
  • Null:指示属性是否可为null。
  • Default:未指定属性时的默认值。
  • Key:显示属性是否为主键(primary key),主键是表中一行的唯一标识符。
  • Extra:额外信息,如id字段的auto_increment表示插入新条目时值自动增加。
查询表中数据
  • 查询表中所有记录所有字段
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 |
+----+-------------------+---------+-------+-------------+-----------------+
4 rows in set (0.004 sec)
  • 查询表中所有记录特定字段
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 |
+-------------------+---------+-------+
4 rows in set (0.001 sec)
WHERE子句

筛选指定结果

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 |
+----+-------------------+---------+-------+-------------+-----------------+
3 rows in set (0.020 sec)

条件操作数:

OperatorDescription
=等于
<>不等于(部分SQL版本可能为!=)
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在指定的包含范围内
LIKE搜索匹配模式
IN指定列的多个可能值
# 条件操作符包括:=、<>、>、<、>=、<=MariaDB [inventory]> SELECT * FROM product WHERE price > 100;# BETWEEN示例,匹配1到3之间(包括1和3)的记录MariaDB [inventory]> SELECT * FROM product WHERE id BETWEEN 1 AND 3;# IN示例,匹配id为1或3的记录;匹配名称为'Servers'或'Ssd'的记录MariaDB [inventory]> SELECT * FROM product WHERE id IN (1,3);MariaDB [inventory]> SELECT * FROM category WHERE name IN ('Servers','Ssd');# LIKE示例,匹配名称包含'Server'的记录(%表示一个或多个字符)MariaDB [inventory]> SELECT * FROM product WHERE name like '%Server%';# 逻辑与AND示例,匹配名称包含'RD'且价格大于1000的记录MariaDB [inventory]> SELECT * FROM product WHERE name like '%RD%' AND price>1000;# 逻辑或OR示例,匹配名称包含'RD'或价格大于500的记录MariaDB [inventory]> SELECT * FROM product WHERE name like '%RD%' OR price>500;# ORDER BY示例,按价格升序排序;按价格降序排序MariaDB [inventory]> SELECT * FROM product ORDER BY price;MariaDB [inventory]> SELECT * FROM product ORDER BY price desc;
多表查询
# 示例1:查询产品类型是Servers的产品名称和价格
MariaDB [inventory]> SELECT product.name,product.price
FROM product,category
WHERE product.id_category = category.id
AND category.name='Servers';
# 示例2:查询厂商是Lenovo的产品名称和价格
MariaDB [inventory]> SELECT product.name,product.price
FROM product,manufacturer
WHERE product.id_manufacturer = manufacturer.id
AND manufacturer.name='Lenovo';
函数
# 示例1:查询产品价格平均值
MariaDB [inventory]> SELECT avg(price) FROM product;
# 示例2:查询产品价格最大值
MariaDB [inventory]> SELECT max(price) FROM product;
# 示例3:查询产品价格最小值
MariaDB [inventory]> SELECT min(price) FROM product;
# 示例4:查询产品存量总和
MariaDB [inventory]> SELECT sum(stock) FROM product;
# 示例5:查询产品价格最小值的产品信息
MariaDB [inventory]> SELECT * FROM product WHERE price=(SELECT min(price) FROM product);
# 示例6:查询Lenovo厂商提供的产品数量
MariaDB [inventory]> SELECT count(product.name)
FROM product,manufacturer
WHERE product.id_manufacturer = manufacturer.id
AND manufacturer.name='Lenovo';
# GROUP BY示例,根据id_category分组,查询每组的存量总和
MariaDB [inventory]> SELECT id_category,sum(stock) FROM product GROUP BY id_category;
4.4.3 创建表
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.017 sec)
MariaDB [inventory]> SHOW TABLES;
4.4.4 插入记录
MariaDB [inventory]> INSERT INTO staff (id,name,age,id_department)
VALUES (1,'lzh1',28,10);
MariaDB [inventory]> INSERT INTO staff (id,name,age) VALUES (2,'lzh2',20);
MariaDB [inventory]> INSERT INTO staff (id,name) VALUES (3,'lzh3');
4.4.5 更新记录
MariaDB [inventory]> UPDATE staff SET age=30 WHERE id=3;
MariaDB [inventory]> UPDATE staff SET age=30;

注意:如果使用不带WHERE子句的UPDATE,则表中的所有记录都会更新。

4.4.6 删除记录
MariaDB [inventory]> DELETE FROM staff WHERE id=3 ;
MariaDB [inventory]> DELETE FROM staff ;

注意:如果使用不带WHERE子句的DELETE子句,则表中的所有记录都会删除。

4.4.7 删除表
MariaDB [inventory]> DROP TABLE staff ;

四、管理 MariaDB 用户

4.1 创建用户账户

默认情况下,MariaDB的用户和密码与本地系统用户和密码分开,即名称相同的MariaDB用户和Linux用户是不同的。

创建新用户需以下权限之一:

使用CREATE USER语句在mysql数据库的user表中创建新记录,用户名格式为**user_name@host_name**,可根据主机源创建同名但特权不同的用户。

[root@server ~]# mysql
#  %可以从任意主机登录
MariaDB [(none)]> CREATE USER lzh@'%' IDENTIFIED BY '123';
#权限重载
MariaDB [(none)]>flush privileges

当前,lzh帐户只能使用密码123从**%**连接。

用户密码加密存储在mysql.user表:

MariaDB [mysql]> SELECT host,user,password FROM user WHERE user = 'lzh';
+-----------+--------+-------------------------------------------+
| host      | user   | password                                  |
+-----------+--------+-------------------------------------------+
| %         | lzh | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
+-----------+--------+-------------------------------------------+
1 row in set (0.000 sec)

用户帐户定义示例:

AccountDescription
lzh或者lzh@‘%’用户lzh可从任何主机连接
lzh@‘localhost’用户lzh只能从本地主机连接
lzh@‘192.168.1.5’用户lzh只能从IP地址192.168.1.5连接
lzh@‘192.168.1.%’用户lzh可从192.168.1.0/24网络的任何地址连接
lzh@‘2001:db8:18:b51:c32:a21’用户lzh可从IP地址2001:db8:18:b51:c32:a21连接

4.2 控制用户权限

新帐户默认被授予最小特权,不授予其他特权时,大多数操作被拒绝。

示例:

[root@server ~]# mysql -u lzh -p
Enter password: 123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
mariadb version: 10.3.17-MariaDB MariaDB mariadb
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)]> SELECT USER();
+------------------+
| USER()           |
+------------------+
| lzh@localhost |
+------------------+
1 row in set (0.003 sec)
#列出当前用户可查看的数据库
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.004 sec)
MariaDB [(none)]> USE mysql;
ERROR 1044 (42000): Access denied for user 'lzh'@'localhost' to database 'mysql'
MariaDB [(none)]> CREATE DATABASE inventory;
ERROR 1044 (42000): Access denied for user 'lzh'@'localhost' to database 'inventory'
MariaDB [(none)]>

privileges是用户在MariaDB中拥有的能力,确定用户可以做什么以及用户在MariaDB中可以做什么。特权按范围进行组织:

  • 全局特权,用于管理MariaDB数据库服务器本身,例如CREATE USER

  • 数据库特权,用于在MariaDB服务器上创建数据库和使用数据库,例如CREATE DATABASE

  • 表特权,用于在特定数据库中创建表和处理数据,例如CRUD命令。

    CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。

  • 列特权,用于授予类似表的命令用法,但用于特定的列(通常很少见)。

详情参考本节末尾引用的MariaDB文档。

4.2.1 查询用户权限
MariaDB [(none)]> SHOW GRANTS FOR root@localhost;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*84BB5DF4823DA319BBF86C99624479A198E6EEE9' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION                                                                          |
+----------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.006 sec)
4.2.2 授予用户权限

GRANT语句用于授予特权,连接用户需有GRANT OPTION必须具有要授予的特定特权

示例:root用户向lzh用户授予inventory数据库中category表的CRUD特权

[root@server ~]# mysql -u root -p
Enter password: 123
MariaDB [(none)]> GRANT SELECT, UPDATE, DELETE, INSERT
-> ON inventory.category
-> TO lzh@'%';
Query OK, 0 rows affected (0.006 sec)
MariaDB [inventory]> exit
Bye

验证权限:

[root@server ~]# mysql -u lzh -p
Enter password: 123
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]> SELECT * FROM category;
+----+------------+
| id | name       |
+----+------------+
|  1 | Networking |
|  2 | Servers    |
|  3 | Ssd        |
+----+------------+
3 rows in set (0.004 sec)

授权示例

GrantDescription
GRANT SELECT ON database.table TO username@hostname向特定用户授予特定数据库中特定表的SELECT特权
GRANT SELECT ON database. TO username@hostname*向特定用户授予特定数据库中所有表的SELECT特权
GRANT SELECT ON *.* TO username@hostname向特定用户授予所有数据库中所有表的SELECT特权
GRANT CREATE, ALTER, DROP ON database. to username@hostname*向特定用户授予特定数据库中创建、修改、删除表的特权
GRANT ALL PRIVILEGES ON *.* to username@hostname向特定用户授予所有数据库的所有可用特权,相当于超级用户root
4.2.3 回收用户权限

REVOKE语句从帐户中删除特权,连接用户需有GRANT OPTION且具有被撤消的特定特权。

MariaDB [(none)]> REVOKE SELECT, UPDATE, DELETE, INSERT
-> ON inventory.category FROM lzh@localhost;
Query OK, 0 rows affected (0.011 sec)

4.3 删除用户

不再需要特定用户帐户时,使用DROP USER删除,用户名格式为'user'@'host'

MariaDB [(none)]> DROP USER lzh@localhost;
Query OK, 0 rows affected (0.001 sec)

注意:删除当前连接的帐户,在关闭连接后才会生效。

4.4 更改用户密码

# root用户修改普通用户账户密码
MariaDB [(none)]> USE mysql;
MariaDB [(mysql)]> UPDATE user SET password=PASSWORD('123') WHERE user='lzh' and host='localhost';
# 或者
MariaDB [(none)]> SET PASSWORD FOR 'lzh'@'localhost' = PASSWORD('123');
# 普通用户修改自己账户密码
MariaDB [(none)]> SET PASSWORD = PASSWORD('123');
MariaDB [(none)]> FLUSH PRIVILEGES;

4.5 排故数据库访问

问题解决方法
已授予用户从任何主机连接权限,但只能本地连接若配置文件/etc/my.cnf.d/mariadb-server.cnf中设了skip-networking,删除该指令并重启服务
用户可本地连接,但不能远程连接确保/etc/my.cnf.d/mariadb-server.cnf中的bind-address配置正确,且用户表包含用户连接主机的条目
用户可连接,但除information_schema外看不到其他数据库确保已授予用户访问其数据库的权限,新用户默认权限最小会有此问题
用户可连接,但不能创建数据库考虑授予用户全局CREATE特权(也会授予DROP特权)
用户可连接,但不能读取或写入数据授予用户所使用数据库的CRUD特权

4.6 忘记 root 用户密码

  1. 编辑**/etc/my.cnf.d/server.cnf**配置文件,在[mysqld]下添加skip-grant-tables=1
  2. 重启mariadb服务。
  3. 执行mysql -u root命令进入mysql命令行,修改root用户密码:
[root@server ~]# mysql -u root
MariaDB [(none)]> UPDATE mysql.user SET password=PASSWORD('新密码') where USER='root';
MariaDB [(none)]> exit
  1. 注释掉**/etc/my.cnf.d/mariadb-server.cnf配置文件中的skip-grant-tables=1,重启mariadb**服务。

五、备份和恢复MariaDB

5.1 备份方式

5.1.1 逻辑备份
  • 特点:将数据库导出为包含SQL命令的文本文件,通过查询数据库检索结构,备份速度较慢,可移植性高,服务器联机时执行,不包括日志或配置文件。
5.1.2 物理备份

5.2 执行备份

5.2.1 执行逻辑备份

运行mysqldump时连接的MariaDB用户至少需对转储表有SELECT特权,对转储视图有SHOW VIEW,对转储触发器有TRIGGER特权。

语法:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

常用选项:

-A, --all-databases:备份所有数据库
--ignore-database=name:不备份指定数据库,与--all-databases一起使用
-B, --databases:备份多个数据库
-Y, --all-tablespaces:备份所有表空间
--ignore-table=name:不备份指定表,需指定数据库和表名
-y, --no-tablespaces:不备份任何表空间信息
--add-drop-database:每个创建前添加DROP DATABASE
--add-drop-table:每个创建前添加DROP TABLE
-x, --lock-all-tables:锁定所有数据库的所有表,关闭--single-transaction和--lock-tables

示例:

[root@server ~]# mysqldump -u root -p inventory > /backup/inventory.dump
[root@server ~]# mysqldump -u root -p --all-databases > /backup/mariadb.dump
5.2.2 执行物理备份

mariabackup工具由AppStream存储库中的mariadb-backup包提供,执行完整物理备份。

# 安装mariadb-backup
[root@server ~]# yum install mariadb-backup
# 准备备份目录
[root@server ~]# mkdir -p /var/mariadb/backup/
# 执行备份
[root@server ~]# mariabackup --backup --target-dir /var/mariadb/backup/ \
> --user root --password 123

为避免交互式输入密码,可配置在文件中:

[root@server ~]# cat /etc/my.cnf.d/mariabackup.cnf
[xtrabackup]
user=root
password=123

也可创建具有RELOAD、LOCK TABLES和REPLICATION CLIENT权限的用户执行备份。

5.3 执行恢复

还原备份会覆盖数据库服务器内容,新数据会丢失。

5.3.1 恢复逻辑备份
[root@server ~]# mysql -u root -p inventory < /backup/mariadb.dump
5.3.2 恢复物理备份

mariabackup工具恢复选项:

  • –copy-back:保留原始备份文件。
  • –move-back:将备份文件移动到数据目录,删除原始备份文件。

操作过程:

# 停止mariadb服务
[root@server ~]# systemctl stop mariadb
# 确保数据库数据目录是空
[root@server ~]# grep '^datadir' /etc/my.cnf.d/mariadb-server.cnf
datadir=/var/lib/mysql
[root@server ~]# rm -rf /var/lib/mysql/*
# 恢复备份
[root@server ~]# mariabackup --copy-back --target-dir=/var/mariadb/backup/
# 修改数据目录权限
[root@server ~]# chown -R mysql:mysql /var/lib/mysql/
# 启动mariadb服务
[root@server ~]# systemctl start mariadb

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

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

相关文章

git官方库PaddleOCR提供的几种模型库;github拉下来的源码和pip包(CLI)使用;supervisorctl部署踩坑;PaddleOCR文本检测模块训练实战(踩坑)

1.git官方库PaddleOCR提供的几种模型库; PaddleOCR-VL - 通过 0.9B VLM 进行多语言文档解析。 该模型是专为文档解析量身定制的 SOTA 和资源高效模型,支持 109 种语言,擅长识别复杂元素(例如文本、表格、公式和图表…

2026东四省最新艺考集训学校 TOP5 评测!辽宁、沈阳等地优质培训机构权威榜单发布,助力艺考生升学梦想

随着艺术升学竞争日趋激烈,专业的艺考集训成为艺考生实现名校梦想的关键助力。本榜单基于教学成果、师资力量、课程体系、硬件设施四大维度,结合东四省艺考生及家长口碑反馈,权威解析2026年五大艺考集训品牌综合实力…

uni-app 不同页面EventChannel通信

详情页 假设在列表页中你有某个方法来监控连接状态(如通过 WebSocket 或定时器),并且一旦连接断开,就通知详情页。 // 列表页代码 async monitorConnection(item) {// 假设你有一个函数来监控设备连接状态变化let …

超越期待:为什么说上海博禹泵业是国产水泵的“性价比王牌”?

我所在单位主要负责市政排水和应急防汛工作。2023年汛期前,我们采购了上海博禹泵业有限公司的真空辅助自吸泵和便携式防汛潜水泵。经过一年多的使用,我对博禹水泵的性能有了全面的了解。 初次采购时,我们比较了多家…

【ACM出版】第七届计算机信息和大数据应用国际学术会议(CIBDA 2026)

【ACM出版】 第七届计算机信息和大数据应用国际学术会议(CIBDA 2026) 2026 7th International Conference on Computer Information and Big Data Applications 在这里看会议官网详情 大会时间:2026年3月20-22日 大…

文档识别架构思路整理;

1.文档识别架构思路整理 “直接把整个文件给 LLM”本来就不对 👉 Paddle 负责“看清楚”,LLM 负责“想明白” 1️⃣ LLM 的天然限制 上下文窗口有限(即便 128k 也不够 PDF / 扫描件) 成本高 注意力会被无关内容稀…

2026年苏州夹爪供应商深度解析:谁将成为您的柔性自动化伙伴?

一支由高性能仿生有机硅制成的“隐形手套”,正在长三角的工业产线上,为那些价值不菲、表面娇贵的工件提供着零损伤搬运服务。 苏州柔触机器人科技有限公司在苏州及深圳打造的用户体验与测试服务中心,能实现15分钟现…

2025年电滑环市场占有率排行出炉,滑环/旋转接头/集电环/电环/气路滑环/光电滑环,电滑环源头厂家哪家权威

在工业4.0与智能制造浪潮的推动下,电滑环作为旋转设备中实现电信号、气液传输的核心部件,其市场需求呈现爆发式增长。据第三方机构统计,2025年中国电滑环市场规模突破45亿元,但行业集中度不足30%,中小厂商低价竞争…

2026 果树种植户必看:高适配分拣机械手供应商推荐

随着智慧农业的快速发展,果树分拣环节的自动化升级成为提升产业效率的关键。果树分拣机械手凭借精准的分拣能力、稳定的作业表现,有效解决了传统人工分拣效率低、损伤率高、人力短缺等痛点。苏州柔触机器人科技有限公…

2026年广州口碑好的Drupal服务企业排行榜,哪家性价比高?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为企业选型提供客观依据,助力精准匹配适配的Drupal服务伙伴。 TOP1 推荐:宁波思艾特软件有限公司 推荐指数:★★★★★ | 口碑评分:亚洲领先的D…

2026聚乙烯蜡/氧化聚乙烯蜡/裂解聚乙烯蜡厂家推荐,专业生产,品质可靠

2026聚乙烯蜡/氧化聚乙烯蜡/裂裂解聚乙烯蜡厂家推荐:专业生产与品质可靠的价值解析 在精细化工领域,聚乙烯蜡、氧化聚乙烯蜡及裂解聚乙烯蜡作为关键的添加剂与改性剂,其性能的细微差异直接影响着下游塑料加工、涂料…

监控指标

Kubernetes 告警规则清单生命周期类告警类别 指标 / 事件 常见根因 告警信息 / 内容 实际 PromQL生命周期 Pod 状态异常 资源不足 / 调度约束 / 镜像拉取慢 命名空间: {{$labels.namespace}} / Pod: {{$labels.pod_nam…

YOLOv9 Torchaudio安装必要性:音频模块是否冗余?

YOLOv9 Torchaudio安装必要性&#xff1a;音频模块是否冗余&#xff1f; 你有没有在使用YOLOv9镜像时&#xff0c;看到torchaudio0.10.0这个依赖项&#xff0c;心里闪过一个疑问&#xff1a;“这玩意儿是干嘛的&#xff1f;我做目标检测&#xff0c;又不做语音识别&#xff0c…

东北卓越名车的配件供应靠谱吗,深度剖析供应体系!

本榜单依托东北地区高档车维修改装市场的全维度调研与真实车主口碑反馈,深度筛选出五家专注路虎捷豹服务的标杆机构,为车主解决怕被坑、怕修坏、怕等、怕假货、没地方去的核心痛点,助力精准匹配专业可靠的服务伙伴。…

评测报告:浙江广告公司在品牌塑造中的角色与价值,当下广告优质品牌选购指南

在美妆行业高度同质化的竞争环境中,品牌视觉设计已成为企业突破市场壁垒、建立差异化认知的核心抓手。作为深耕美妆领域17年的专业机构,杭州帕特广告策划有限公司(以下简称“帕特广告”)凭借对行业趋势的精准洞察与…

FSMN-VAD服务守护:后台常驻进程配置教程

FSMN-VAD服务守护&#xff1a;后台常驻进程配置教程 1. 为什么需要让FSMN-VAD服务“一直在线” 你可能已经成功跑通了FSMN-VAD语音端点检测的Web界面——上传一段录音&#xff0c;点击检测&#xff0c;几秒后看到清晰的时间戳表格。但很快会发现一个问题&#xff1a;关掉终端…

光伏线缆制造厂哪个值得选,品恩泰克品质保障受认可

2026年十五五规划推动能源绿色转型提速,光伏产业作为可再生能源主体赛道迎来爆发式增长,光伏线缆作为系统能量纽带,其定制工期效率、产品线覆盖广度及品质稳定性直接决定光伏项目的落地速度与长期收益。然而当前市场…

沪苏浙皖设备模型服务商推荐,聚景模型上榜了吗?

一、基础认知篇 问题1:什么是设备模型服务商?和普通模型制作商有何区别? 设备模型服务商是以工业、机械、航空航海等领域的设备为核心服务对象,提供从需求调研、设计优化到模型制作、交付维护全链路解决方案的专业…

2025浙江山地速降基地大揭秘!口碑爆棚的TOP5来袭,山地速降/山地车骑行/山地车/户外骑行,山地速降基地口碑推荐

随着全民健身热潮的深入与户外运动的兴起,山地速降这项集技巧、勇气与自然探索于一体的极限运动,正从专业小众圈层走向更广泛的运动爱好者。浙江,凭借其得天独厚的丘陵地貌与成熟的文旅产业基础,已成为国内山地车运…

2026年浑南专业的车衣改色实体店推荐榜单,车衣改色/太阳膜/贴车衣/汽车车衣/隐形车衣/汽车贴膜,车衣改色定制哪家好

随着汽车消费市场个性化需求激增,车衣改色已成为车主表达审美、保护车漆的核心选择。据行业数据显示,2025年国内车衣改色市场规模突破120亿元,年复合增长率达25%,消费者对施工工艺、产品品质及服务体验的关注度持续…