当前位置: 首页 > 文档资料 > 技术文档 Cookbook >

MariaDB

优质
小牛编辑
151浏览
2023-12-01

MariaDB 安装

安装与启动
# yum groupinstall mariadb mariadb-client -y
# systemctl start mariadb
# systemctl enable mariadb
查看 MariaDB 监听的端口
# ss -tulpn | grep mysql
skip-networking 配置测试
# vim /etc/my.cnf
skip-networking=1
# systemctl restart mariadb
# ss -tulpn | grep mysql
Noteskip-networking 配置将导致 MariaDB 只能在本地连接,不监听端口接收远程连接。skip-networking=1 配置需添加在 [mysqld] 下面。
mysql_secure_installation 初始化那全配置
# mysql_secure_installation
root 用户登录
# mysql -uroot -predhat
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

基本管理

管理相关的元数据

MariaDB 默认安装会有三个模型:information_schema,performance_schema,mysql。它们保存着和管理相关的元数据。

查看元数据数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
mysql.servers 表中保存有服务器相关的配置
MariaDB [(mysql)]> DESCRIBE servers;
MariaDB [(mysql)]> SELECT * FROM servers;

SQL 语法

创建数据库
CREATE DATABASE DBNAME;
Table 1. MariaDB 支持的比较运算符
运算符描述

=

等于

<>

不等于,有些版本下的 SQL 也支持 !=

>

大于

<

小于

>=

大于等于

小于等于

BETWEEN

在两者之间

LIKE

使用范式查询

IN

在指定的可能的值之中

MariaDB Knowledge Base: SQL Statements

MariaDB Knowledge Base: Data Types

创建用户

CREATE USER USERNAME@HOSTNAME IDENTIFIED BY 'PASSWORD'
Account描述

test_user@localhost

test_user 只可从本地 localhost 连接

test_user@192.168.1.5

test_user 只可从 192.168.1.5 连接

test_user@'192.168.1.%'

test_user 只可从 192.168.1.0 网段服务器连接

test_user@'%'

test_user 可从任意主机连接

test_user@'2000:472:18:b51:c32:a21'

test_user 只可从 2000:472:18:b51:c32:a21 连接

权限管理

分配权限
GRANT SELECT, UPDATE, DELETE, INSERT on inventory.category to test_user@localhost;
FLUSH PRIVILEGES;
收回权限
REVOKE SELECT, UPDATE, DELETE, INSERT test_user@localhost;
FLUSH PRIVILEGES;
分配权限示例说明

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

分配 CREATE, ALTER, DROP 某一数据库中的所有表的权限

GRANT ALL PRIVILEGES ON . to username@hostname

分配所有权限,相当于root 用户

查看某一用户的权限
SHOW GRANTS FOR username

创建用户分配权限示例

创建 2 个用户,分配不同权限
CREATE USER john@localhost identified by 'john_password';
CREATE USER steve@'%' identified by 'steve_password';
GRANT INSERT, UPDATE, DELETE, SELECT on inventory.* to john@localhost;
GRANT SELECT on inventory.* to steve@'%';
FLUSH PRIVILEGES;
使用 john 用户进行增、删、改、差
$ mysql -u john -p
USE inventory;
SELECT * FROM category;
INSERT INTO category(name) VALUES('Memory');
UPDATE category SET name='Solid State Drive' where id = 3;
DELETE FROM category WHERE name LIKE 'Memory';
远程使用 steve 用户登录,进行增、删、改、差
$ mysql -u steve -h server -p
USE inventory;
SELECT * FROM category;
INSERT INTO category(name) VALUES('Memory');

备份和恢复数据库数据

两种备份方式比较

逻辑备份物理(原始)备份
  • 数据库结构是通过查询数据库来检索的。

  • 逻辑备份的可移植性很高,在某些情况下可以恢复到另一个数据库提供程序(如 Postgres)。

  • 备份过程很慢,因为服务器必须访问数据库信息并将其转换为逻辑格式。

  • 在服务器运正常行时执行。

  • 备份不包含日志和配置文件。

  • 包含数据库目录和文件夹的原始副本。

  • 输出更精简。

  • 备份可以包含日志和配置文件。

  • 只能移植到具有类似硬件和软件的其他计算机。

  • 比逻辑备份快。

  • 应在服务器脱机或者数据库中所有表均锁定时执行,防止在备份期间发生更改。

备份一个数据库中的数据
mysqldump -u root -p inventory > /backup/mariadb.dump
备份所有数据库中的数据
mysqldump -u root -p --all-databases > /backup/mariadb.dump

物理备份一般是通过如下工具:

  • ibbackup

  • cp

  • mysqlhotcopy

  • lvm

恢复备份
mysql -u root -p inventory < /backup/mariadb.dum
恢复备份
systemctl stop mariadb
rm -rf /var/lib/mysql/*
cp -r /backup/* /var/lib/mysql/*

逻辑备份恢复示例

在数据库 A 上备份数据
mysqldump -u root -p inventory > /backup/inventory.dump
在数据库 B 上恢复备份
# mysql -u root
MariaDB [(none)]> create database inventory;
MariaDB [(none)]> exit

# mysql -u root inventory < inventory.dump
# mysql -u root
MariaDB [(none)]> use inventory;
MariaDB [(inventory)]> SELECT * FROM category;

最后更新:

类似资料

  • 认证(Authentication) 身份验证是大多数现有应用程序的重要组成部分。有许多不同的方法、策略和方法来处理用户授权。我们最终决定使用什幺取决于特定的应用程序要求,并且与它们的需求密切相关。 passport 是目前最流行的 node.js 认证库,为社区所熟知,并相继应用于许多生产应用中。将此工具与 Nest 框架集成起来非常简单。为了演示,我们将设置 passport-http-bea

  • 下面是一个 XML 技术的列表。 XHTML (可扩展 HTML) 更严格更纯净的基于 XML 的 HTML 版本。 XML DOM (XML 文档对象模型) 访问和操作 XML 的标准文档模型。 XSL (可扩展样式表语言) XSL 包含三个部分: XSLT (XSL 转换) - 把 XML 转换为其他格式,比如 HTML XSL-FO (XSL 格式化对象)- 用于格式化 XML 文档的语言

  • AJAX不能独立工作。 它与其他技术结合使用来创建交互式网页。 JavaScript 松散类型的脚本语言。 在页面中发生事件时调用JavaScript函数。 整个AJAX操作的胶水。 DOM 用于访问和操作结构化文档的API。 表示XML和HTML文档的结构。 CSS 允许将演示样式与内容明确分开,并可通过JavaScript以编程方式进行更改 XMLHttpRequest 与服务器执行异步交互的

  • 可能因为是线下面,再加上公司内部信息流通比较快,一天内的上下午就面完了! 我个人还是对公司的业务非常感兴趣的!所以提前看过好几篇公司业务相关的文章 面试官人很nice,我俩基本上是我一答他一回应,所以我在这里重点挑自己印象里答得不好的地方写写。 技术面 堆和栈的区别?堆是怎么样的数据结构? 数组和链表的具体区别呢?优缺点?存取效率? 原型链?可以先答概念,在用Object和Array来解释各个指向

  • 用例是黑盒测试的功能测试,用于根据系统的使用从系统的开始到结束识别测试用例。通过使用这种技术,测试团队创建了一个测试场景,可以从头到尾根据每个功能的功能运行整个软件。 在这种情况下,有一个测试人员代表用户逐个使用系统的功能。在这种情况下,有一个演员代表用户使用软件系统的功能。 这描述了软件应用程序的逐步功能,可以通过一个例子来理解,假设存在在线资金转移的软件应用程序。转账的各个步骤如下: 用户登录

  • 主要内容:动态分区的缺点,需要分页动态分区的缺点 动态分区的主要缺点是外部碎片。 尽管这可以通过压缩来消除,但正如我们前面所讨论的那样,压缩使得系统效率低下。 我们需要找一种替代机制,以更优化的方式加载分区中的进程。 让我们讨论一个称为分页的动态灵活机制。 需要分页 让我们考虑一个大小为2 MB的进程P1和分为三个分区的主内存。 在三个分区中,两个分区是每个大小为1 MB的空洞。 P1需要在主存中加载2 MB空间。 我们有两个1M