Linux中mariadb的安装及使用

这篇具有很好参考价值的文章主要介绍了Linux中mariadb的安装及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、mariadb和MySQL之间的关系:

​ MySQL 和 MariaDB 都是开源数据库技术。MySQL 是最广泛采用的开源数据库。它是许多应用程序和商业产品的主要关系数据库。MariaDB 是 MySQL 的修改版本。在 MySQL 被 Oracle 公司收购后,出于许可和分发方面的问题,MySQL 的原始开发团队制作了 MariaDB。自收购以来,MySQL 和 MariaDB 经历了不同的发展。但是,MariaDB 采用 MySQL 的数据和表定义文件,还使用相同的客户端协议、客户端 API、端口和套接字。

1.1、相似点:

​ 由于 MariaDB 是 MySQL 的分支,因此这两个关系数据库管理系统有许多相似之处。例如,MariaDB 保留了 MySQL 的结构、命名约定和数据定义文件。此外,它还支持所有 MySQL 连接器、连接和端口。所以 MySQL 客户端包在 MariaDB 中可以正常工作。

ACID 合规性 原子性、一致性、隔离性和持久性 (ACID) 是确保数据库事务可靠性的四个核心原则。MySQL 和 MariaDB 都遵循这些原则。这两种数据库都通过遵循 ACID 来保持数据的准确性和完整性。
SQL 兼容性 MySQL 和 MariaDB 都是将数据整理到表中的关系数据库。MariaDB 和 MySQL 都使用 SQL 来管理和查询数据。您可以在这些系统之中使用许多相同的命令。
开源软件 作为开源关系数据库管理系统,MySQL 和 MariaDB 都是开发人员社区共同努力的结果。两者的源代码都向公众公开。MySQL 数据库有一个完全开源的版本,根据通用公共许可证 (GPL) 发布。它还具有一个付费的企业版本,该版本带有附加功能和支持。MariaDB 在 GitHub 上是完全开源的。
安全性 MySQL 和 MariaDB 提供类似的基本安全功能。它们提供加密功能、访问控制机制、用户身份验证和授权功能以及 SSL/TLS 支持。它们还允许进行精细的访问控制,让您可以为不同的用户提供不同的权限级别。

1.2、主要差异:

MySQL MariaDB
JSON MySQL 将 JSON 报告存储为二进制对象。 MariaDB 将 JSON 报告存储在字符串中。MariaDB 的 JSON 数据类型是 LONGTEXT 的别名。
Oracle 数据库兼容性 MySQL 具有很高的兼容性,但不支持 PL/SQL。 MariaDB 具有很高的兼容性,自 10.3 版本起支持 PL/SQL。
速度和性能 在复制和查询方面,MySQL 比 MariaDB 稍慢一些。 在复制和查询方面,MariaDB 比 MySQL 稍快一些。
功能 MySQL 支持超级只读函数、动态列和数据掩码。 MariaDB 支持隐形列和临时表空间。
身份验证 MySQL 有 validate_password 组件。 MariaDB 有三个密码验证器组件。
加密 MySQL 数据库使用 InnoDB 和 AES 对静态数据进行加密。 MariaDB 支持临时日志加密和二进制日志加密。
存储引擎 MySQL 的存储引擎比 MariaDB 少。 MariaDB 的存储引擎比 MySQL 多,可以在一个表中使用多个引擎。
许可证 MySQL 有两个版本:MySQL 企业版和 GPL 版本。 MariaDB 完全采用 GPL 版本。
线程池 MySQL 企业版带有线程池。 MariaDB 可以同时管理超过 20 万个连接,比 MySQL 更多。

2、安装Mariadb

2.1、使用命令安装mariadb

yum -y install mariadb-server mariadb

出现complete即下载完成

mariadb,mariadb,数据库,linux,运维,服务器

开启mariadb服务并且使其开机自启动

systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb

2.2、mariadb初始化

输入命令初始化mariadb

mysql_secure_installation

输入当前密码,初次安装没有密码,直接回车就行

mariadb,mariadb,数据库,linux,运维,服务器

是否为root设置新密码,选择y

mariadb,mariadb,数据库,linux,运维,服务器

输入新密码并确认

mariadb,mariadb,数据库,linux,运维,服务器

是否移除匿名用户,随意,建议y

mariadb,mariadb,数据库,linux,运维,服务器

是否拒绝远程登录,建议选n

mariadb,mariadb,数据库,linux,运维,服务器

是否删除test库,随意选择

mariadb,mariadb,数据库,linux,运维,服务器

重新加载权限表:y

mariadb,mariadb,数据库,linux,运维,服务器

3、mariadb数据库基础操作

mysql -uroot -p

输入刚设置的密码后进入数据库

mariadb,mariadb,数据库,linux,运维,服务器

3.1、用户

创建一个名为admin的本地用户,密码为123

create user shihk@localhost identified by '123';

授予该用户所有权限

GRANT ALL PRIVILEGES ON my_database.* TO 'shihk'@'localhost';

查看所有用户

SELECT host,user,select_priv FROM mysql.user;    ————select_priv为是否存在可查询权限

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5NGIGp59-1692667071699)(https://yw-linux-1318457786.cos.ap-nanjing.myqcloud.com/QQ%E6%88%AA%E5%9B%BE20230815142431.png)]

删除用户

DROP USER 'username'@'host';    ————username为用户名称,————host为本地访问,可以更改为%,意为任意访问

3.2、数据库

创建test数据库

CREATE DATABASE test;

进入test数据库

use test;

删除数据库

DROP DATABASE IF EXISTS 'database';    ————database为数据库名称,'IF EXISTS'指在删除前检查数据库是否存在

3.3、数据表

创建数据表s001,s002,并设置id为主字段且自增(AUTO_INCREMENT PRIMARY KEY)

CREATE TABLE s001 (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);
CREATE TABLE s002 (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

查询所有数据库中存在的表

show tables;

mariadb,mariadb,数据库,linux,运维,服务器

删除数据表

DROP TABLE '数据表';
3.3.1、数据表基础操作
#插入数据    ————INSERT INTO 数据表 (字段名,字段名……) VALUES( ),( ),( )……;
INSERT INTO s002 (name, age) VALUES ('Dlice', 30), ('Eob', 22), ('Farol', 28);
#查询数据    ————SELECT 字段 FROM 数据表;  查询全部字段用'*'
SELECT * FROM s002;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-splitelh-1692667071699)(https://yw-linux-1318457786.cos.ap-nanjing.myqcloud.com/QQ%E6%88%AA%E5%9B%BE20230816142419.png)]

关联查询多张表表内容

#SELECT column1, column2, ... FROM table1
 ->UNION
 ->SELECT column1, column2, ... FROM table2;
#column1, column2, ... 表示要选择的列,table1 和 table2 分别是要查询的表,全部查询用'*'。
#查询表s001,s002中name和age列内容
SELECT name,age FROM s001 UNION SELECT name,age FROM s002;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kiO4nG8I-1692667071699)(https://yw-linux-1318457786.cos.ap-nanjing.myqcloud.com/QQ%E6%88%AA%E5%9B%BE20230816144956.png)]

#删除数据    ————DELETE FROM 数据库 WHERE 字段 = ' ';
DELETE FROM s002 WHERE id = 3;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0GW0MKMS-1692667071699)(https://yw-linux-1318457786.cos.ap-nanjing.myqcloud.com/QQ%E6%88%AA%E5%9B%BE20230816142653.png)]

3.3.2、主外键设置

​ 创建表s003并设置int型字段id,为自增主字段;int型字段s002_id为外键,绑定s002中的id,使s002删除数据,s003也同步删除

CREATE TABLE s003 (
    id INT AUTO_INCREMENT PRIMARY KEY,
    s002_id INT,
    other_column VARCHAR(50),
    FOREIGN KEY (s002_id) REFERENCES s002(id) ON DELETE CASCADE
);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xIqsZCcX-1692667071700)(https://yw-linux-1318457786.cos.ap-nanjing.myqcloud.com/QQ%E6%88%AA%E5%9B%BE20230817085648.png)]

3.4、存储过程与触发器

3.4.1、存储过程设置

创建存储过程,使在s002中插入数据时,s003同时插入

#存储过程的前提是两表之间有主外键关系
DELIMITER //
CREATE PROCEDURE InsertIntoS002AndS003(IN name_val VARCHAR(50), IN age_val INT)
BEGIN
    DECLARE new_id INT;

    INSERT INTO s002 (name, age) VALUES (name_val, age_val);

    SET new_id = LAST_INSERT_ID();

    INSERT INTO s003 (s002_id, other_column) VALUES (new_id, CONCAT('Data for s002_id ', new_id));
END;
//

使用存储过程

CALL InsertIntoS002AndS003('name', age);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QwlBM9FB-1692667071700)(https://yw-linux-1318457786.cos.ap-nanjing.myqcloud.com/QQ%E6%88%AA%E5%9B%BE20230817113350.png)]

ps:存储过程类似于编程语言中的函数,需要主动去调用

3.4.2、触发器设置

创建触发器,在s004中插入数据时,s005同时插入

DELIMITER //
CREATE TRIGGER InsertIntoS005OnS004Insert

#insert意为在表s004插入后触发,修改为updata,删除为delete
AFTER INSERT ON s004
#设定触发范围(每插入一行都触发)
FOR EACH ROW
BEGIN
    INSERT INTO s005 (s004_id, other_info)
    VALUES (NEW.id, CONCAT('Other info for Item ', NEW.id));
END;
//
DELIMITER ;

插入数据测试

INSERT INTO s004 (name, description) VALUES ('Item 1', 'Description for Item 1');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZqX6lQd7-1692667071700)(https://yw-linux-1318457786.cos.ap-nanjing.myqcloud.com/QQ%E6%88%AA%E5%9B%BE20230817113559.png)]

3.4.3、总结

触发器和存储过程的区别

  1. 执行时机

    触发器:自动在特定数据库操作前后执行,不需要手动调用,通常用于数据完整性、审计等需求。

    存储过程:手动调用执行,根据需要在任何时候执行,通常用于封装业务逻辑、复杂的数据操作。

  2. 用途

    触发器:用于处理数据层面的约束、关联操作、审计记录等。

    存储过程:用于执行自定义的业务逻辑、数据操作、数据转换等。

  3. 复用性

    触发器:通常面向特定表和操作,较难在多个地方复用。

    存储过程:可以在多个地方调用,提供更好的复用性。

​ 总体而言,触发器适用于在数据层面维护完整性和触发操作,存储过程可以参考编程语言中的函数,更适用于执行业务逻辑和封装可复用的操作。

4、备份数据库

4.1、编写数据库备份的脚本back-up-db.sh

#!/bin/bash


#备份地址(需要先创建指定目录)
backupdir=/root/sql/crontab/db/logs
#备份文件后缀时间
time=_`date +%Y_%m_%d_%H_%M_%S`
dbfile=db${time}.sql
dbuser=root
dbpassword=123


#-h 后面跟随mariadb服务端的ip地址
mysql -e "show databases;" -h192.168.18.150 -u${dbuser} -p${dbpassword}| grep -Ev "Database|information_schema|performance_schema|mysql|test" | xargs mysqldump -h192.168.18.150 -u${dbuser} -p${dbpassword} --databases > ${backupdir}/${dbfile}

#以下为单独手动备份
#mysqldump -h192.168.18.150 --port=3306 -uroot -p123 --lock-tables=0 --all-databases > /root/db-`date "+%Y-%m-%d-%H-%M-%S"`.sql

#删除7天之前的备份文件
find $backupdir -name "db*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

echo ${dbfile}" ok"

授予脚本可执行权限

chmod +x back-up-db.sh

4.2、授予数据库用户权限

进入mariadb数据库(-u后面选择要进入的用户)

mysql -uroot -p

授予该用户在192.168.18.150上有访问权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.18.150' IDENTIFIED BY '123' WITH GRANT OPTION;

刷新权限后退出数据库

FLUSH PRIVILEGES;
exit

执行back-up-db.sh脚本

./back-up-db.sh

显示数据库备份已经创建成功

mariadb,mariadb,数据库,linux,运维,服务器

5、设置定时任务

更改vim默认编辑器

export VISUAL=vim

编辑定时任务

#crontab -e

# 每天 15 点 45 执行
45 15 * * * /bin/bash /root/sql/crontab/db/back-up-db.sh

# 启动后执行
@reboot /bin/bash /root/sql/crontab/db/back-up-db.sh

运行效果如下

mariadb,mariadb,数据库,linux,运维,服务器

6、以备份来还原数据库内容

6.1、进入数据库后删除users表

#mysql -uroot -p
#use Test;
#DROP TABLE users
退出数据库
#exit

6.2、用备份数据还原数据库

root为账户,123为账户密码,Test为需要还原的数据库

/root/sql/crontab/db/logs/db_2023_07_19_15_45_01.sql为要导入的备份文件

mysql -uroot -p123 Test < /root/sql/crontab/db/logs/db_2023_07_19_15_45_01.sql

效果如下

mariadb,mariadb,数据库,linux,运维,服务器
图片转存中…(img-Kqpszazg-1692667071700)]

6、以备份来还原数据库内容

6.1、进入数据库后删除users表

#mysql -uroot -p
#use Test;
#DROP TABLE users
退出数据库
#exit

6.2、用备份数据还原数据库

root为账户,123为账户密码,Test为需要还原的数据库

/root/sql/crontab/db/logs/db_2023_07_19_15_45_01.sql为要导入的备份文件

mysql -uroot -p123 Test < /root/sql/crontab/db/logs/db_2023_07_19_15_45_01.sql

效果如下

[外链图片转存中…(img-cOEBFNuS-1692667071700)]文章来源地址https://www.toymoban.com/news/detail-766240.html

到了这里,关于Linux中mariadb的安装及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux环境安装 SQL Server数据库以及使用

    虚拟机:VMware Workstation。 系统:Ubuntu 20.04。 文件系统:XFS 或 EXT4。 内存:至少具有 2 GB 内存。 磁盘空间:6 GB以上。 处理器速度:2 GHz。 处理器核心数:2 个核心。 处理器类型:仅兼容 x64。 安装SQL Server版本:2019。 如果以前安装了 SQL Server 的社区技术预览版 (CTP) 或候选发

    2023年04月12日
    浏览(49)
  • Windows 安装 MariaDB 数据库

    之前一直使用 MySQL,使用 MySQL8.0 时候,占用内存比较大,储存空间好像也稍微有点大,看到 MariaDB 是用来代替 MySQL 的方案,之前用着也挺得劲,MySQL8.0 以上好像不能去导入低版本的 sql,或者需要改一些东西,但是用着 MariaDB 不用改就可以导入,所以写一下这个的安装 Maria

    2024年02月09日
    浏览(50)
  • SQLite3数据库在Linux下的安装+卸载+基本使用

    SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。且SQLite不是一个独立

    2024年02月03日
    浏览(74)
  • Linux使用宝塔面板安装MySQL结合内网穿透实现公网连接本地数据库

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站】 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板+cpolar即可快速搭建一个mysql数据库服务并且实现公

    2024年04月12日
    浏览(55)
  • 【Linux OS】华为openEuler操作系统与openGauss数据库安装及使用入门

    EulerOS 是华为自主研发的服务器操作系统,支持六种处理器架构:x86,Arm,RISC—V,LoongArch,SW64和Power,能够满足客户从传统IT基础设施到云计算服务的需求。 openEuler是EulerOS的开源社区版本。 官网OS镜像下载地址:https://www.openeuler.org/zh/download/ 推荐下载LTS版,当前最新版为:

    2024年02月08日
    浏览(47)
  • 使用MariaDB数据库管理系统

    初始化MariaDB服务 //再确认mariadb数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据库的安全性和正常运转,需要做以下5个操作 1.设置root管理员在数据库中的密码值(该密码并非root管理员在系统中的密码,这里的密码值默认应该为空) 2.设置root管理员在数据

    2024年02月19日
    浏览(49)
  • MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

    MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 MySQL笔记——表的分组查询、表的分页查询、表的约束、数据库设计 MySQL案例——多表查询以及嵌套查询 MySQL笔记——数据库当中的事务以及Java实现对数据库进

    2024年01月16日
    浏览(75)
  • 第十六章 使用MariaDB数据库管理系统

    一、数据库管理系统 1、数据库介绍 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代,互联网上每天都会生成海量的数据信息,数据库技术也从最初只能存储简单的表格数据的单一集中存储模式,发展到了现如今存储海量数据

    2024年02月05日
    浏览(52)
  • 银河麒麟安装mysql数据库(mariadb)-银河麒麟安装JDK-银河麒麟安装nginx(附安装包)

    1.银河麒麟服务器系统安装mysql数据库(mariadb) 2.银河麒麟桌面系统安装mysql数据库(mariadb) 3.银河麒麟服务器系统安装JDK 4.银河麒麟桌面系统安装JDK 5.银河麒麟服务器系统安装nginx 6.银河麒麟桌面系统安装nginx 统信UOS的各种离线全套安装教程: https://blog.csdn.net/ACCPluzhiqi/art

    2024年02月15日
    浏览(44)
  • 如何在安卓手机Termux上安装MariaDB(MySQL)并实现远程连接数据库

    Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身Linux。 MariaDB是MySQL关系数据库管理系统的一个复刻,由社区开发,有商业支持,旨在继续保持在 GNU GPL 下开源。开发这个分支的原因之一是:甲骨文公司

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包