Linux巩固篇018-Linux MariaDB 数据库管理系统

简介: 纸上得来终觉浅,绝知此事要躬行

前言

身为一个三年的运维工程师,从开发转测开再转运维,都是不断学习的过程,未必开发才是最优秀的,找到适合自己的职业不断深耕,你也会在自己的行业大放光彩,本系列依照《Linux就该这么学》系列随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,也希望大家多关注刘遄老师的第二版关于centos8的丛书,学习最前沿的Linux相关技术。

常用命令汇总

数据库管理系统

数据库是指按照某些特定结构来存储数据资料的数据仓库

初始化 MariaDB 服务

[root@mail ~]#  yum install mariadb mariadb-server -y

Loaded plugins: fastestmirror, langpacks

Existing lock /var/run/yum.pid: another copy is running as pid 9523.

Another app is currently holding the yum lock; waiting for it to exit...

 The other application is: PackageKit

   Memory :  37 M RSS (394 MB VSZ)

   Started: Mon Jul 31 18:43:07 2023 - 00:01 ago

   State  : Running, pid: 9523

报这个错说明yum被别的占用了,所以把yum相关运行的文件删一下就行

[root@mail ~]# rm -f /var/run/yum.pid

[root@mail ~]#  yum install mariadb mariadb-server -y

初始化操作涉及下面 5 个步骤。

1.设置 root 管理员在数据库中的密码值(注意,该密码并非 root 管理员在系统中的密码, 这里的密码值默认应该为空,可直接按回车键)。

2.设置 root 管理员在数据库中的专有密码。

3.随后删除匿名账户,并使用 root 管理员从远程登录数据库,以确保数据库上运行的业 务的安全性。

4.删除默认的测试数据库,取消测试数据库的一系列访问权限。

5.刷新授权列表,让初始化的设定立即生效

启动

[root@mail ~]# systemctl start mariadb

配置

[root@mail ~]# mysql_secure_installation

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:  输入要为 root 管理员设置的数据库密码

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] y(删除匿名账户)

... 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] y(禁止 root 管理员从远程登录)

... 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] y(删除 test 数据库并取消对它的访问权限)

- 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] y(刷新授权表,让初始化后的设定立即生效)

生产环境中都需要使用站库分离的技术,如果需要让 root 管理员远程访问数据库,可在上面的初始化操作中设置策略,以允许 root 管 理员从远程访问。还需要设置防火墙,使其放行对数据库服务程序的访问请求,数据库 服务程序默认会占用 3306 端口,在防火墙策略中服务名称统一叫作 mysql:

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

success

[root@mail ~]# firewall-cmd --reload

success

登录

[root@mail ~]# mysql -u root -p  

Enter password:  此处输入 root 管理员在数据库中的密码

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

MariaDB [(none)]> show databases;(展示库)

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

+--------------------+

3 rows in set (0.00 sec)

MariaDB [(none)]> set password = password('linux');(修改密码)

Query OK, 0 rows affected (0.00 sec)

管理账户以及授权

创建数据库管理账户

数据库大小写不敏感,且以分号结尾

MariaDB [(none)]> create user weihongbin@localhost identified by 'linux';

Query OK, 0 rows affected (0.01 sec)

使用管理账户

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]> select host,user,password from user where user='weihongbin';

+-----------+------------+-------------------------------------------+

| host      | user       | password                                  |

+-----------+------------+-------------------------------------------+

| localhost | weihongbin | *6F3CAE7C3BBB2A5B5D933738682953BC21AEBEE7 |

+-----------+------------+-------------------------------------------+

1 row in set (0.00 sec)

使用grant命令授权并查看权限

image.png

MariaDB [mysql]> grant select,update,delete,insert on mysql.user to weihongbin@localhost;

Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> show grants for weihongbin@localhost;

+-------------------------------------------------------------------------------------------------------------------+

| Grants for weihongbin@localhost                                                                                   |

+-------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'weihongbin'@'localhost' IDENTIFIED BY PASSWORD '*6F3CAE7C3BBB2A5B5D933738682953BC21AEBEE7' |

| GRANT SELECT, INSERT, UPDATE, DELETE ON `mysql`.`user` TO 'weihongbin'@'localhost'                                |

+-------------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

移除授权的命令(revoke)与授权命令(grant)不同之外,其余部分都 是一致的

MariaDB [(none)]> revoke select,update,delete,insert on mysql.user from weihongbin@localhost;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show grants for weihongbin@localhost;

+-------------------------------------------------------------------------------------------------------------------+

| Grants for weihongbin@localhost                                                                                   |

+-------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'weihongbin'@'localhost' IDENTIFIED BY PASSWORD '*6F3CAE7C3BBB2A5B5D933738682953BC21AEBEE7' |

+-------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

创建数据库与表单

一个数据库可以存放多个数据表,数据表单是数据库中 最重要最核心的内容

image.png

创建库

MariaDB [(none)]> create database linux;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| linux              |

| mysql              |

| performance_schema |

+--------------------+

4 rows in set (0.00 sec)

创建表(定义存储数据内容的结构:名字、价格、页)

MariaDB [(none)]> use linux;

Database changed

MariaDB [linux]> create table test (name char(15),price int,pages int);

Query OK, 0 rows affected (0.00 sec)

MariaDB [linux]> describe test;

+-------+----------+------+-----+---------+-------+

| Field | Type     | Null | Key | Default | Extra |

+-------+----------+------+-----+---------+-------+

| name  | char(15) | YES  |     | NULL    |       |

| price | int(11)  | YES  |     | NULL    |       |

| pages | int(11)  | YES  |     | NULL    |       |

+-------+----------+------+-----+---------+-------+

3 rows in set (0.02 sec)

管理表单及数据

插入数据

MariaDB [(none)]> use linux

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 [linux]> insert into test(name,price,pages) values('weihongbin','100','1000');

Query OK, 1 row affected (0.01 sec)

MariaDB [linux]> select * from test;

+------------+-------+-------+

| name       | price | pages |

+------------+-------+-------+

| weihongbin |   100 |  1000 |

+------------+-------+-------+

1 row in set (0.00 sec)

修改

MariaDB [linux]> update test set price=55;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [linux]> select price from test;

+-------+

| price |

+-------+

|    55 |

+-------+

1 row in set (0.00 sec)

删除

MariaDB [linux]> delete from test;

Query OK, 1 row affected (0.00 sec)

MariaDB [linux]> select * from test;

Empty set (0.00 sec)

条件查询

1.做数据

MariaDB [linux]> insert into test(name,price,pages) values('weihongbin1','100','100');

Query OK, 1 row affected (0.00 sec)

MariaDB [linux]> insert into test(name,price,pages) values('weihongbin2','200','200');

Query OK, 1 row affected (0.00 sec)

MariaDB [linux]> insert into test(name,price,pages) values('weihongbin3','300','300');

Query OK, 1 row affected (0.00 sec)

MariaDB [linux]> insert into test(name,price,pages) values('weihongbin4','400','400');

Query OK, 1 row affected (0.00 sec)

where命令

image.pngMariaDB [linux]> select * from test where price>99;

+-------------+-------+-------+

| name        | price | pages |

+-------------+-------+-------+

| weihongbin1 |   100 |   100 |

| weihongbin2 |   200 |   200 |

| weihongbin3 |   300 |   300 |

| weihongbin4 |   400 |   400 |

+-------------+-------+-------+

4 rows in set (0.00 sec)

数据库的备份及恢复

mysqldump 命令用于备份数据库数据,格式为“mysqldump [参数] [数据库名称]”

[root@mail ~]# mysqldump -u root -p linux > /root/linux.dump

Enter password:  

[root@mail ~]# mysql -u root -p  

Enter password:  

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 4

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)]> drop database linux;

Query OK, 1 row affected (0.03 sec)

MariaDB [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

+--------------------+

3 rows in set (0.00 sec)

MariaDB [(none)]> create database linux;

Query OK, 1 row affected (0.00 sec)

必须先把库建起来

接下来是数据导入

[root@mail ~]# mysql -u root -p linux < /root/linux.dump  

Enter password:  

[root@mail ~]# mysql -u root -p  

Enter password:  

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 6

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)]> use linux

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 [linux]> show tables;

+-----------------+

| Tables_in_linux |

+-----------------+

| test            |

+-----------------+

1 row in set (0.00 sec)

MariaDB [linux]> describe test;

+-------+----------+------+-----+---------+-------+

| Field | Type     | Null | Key | Default | Extra |

+-------+----------+------+-----+---------+-------+

| name  | char(15) | YES  |     | NULL    |       |

| price | int(11)  | YES  |     | NULL    |       |

| pages | int(11)  | YES  |     | NULL    |       |

+-------+----------+------+-----+---------+-------+

3 rows in set (0.00 sec)

结语

简问简答

初始化 MariaDB 或 MySQL 数据库管理系统的命令是什么?

答:是 mysql_secure_installation 命令,建议每次安装 MariaDB 或 MySQL 数据库管理系统 后都执行这条命令


用来查看已有数据库或数据表单的命令是什么?

答:要查看当前已有的数据库列表,需执行 SHOW databases;命令;要查看已有的数据表单 列表,则需执行 SHOW tables;命令。


切换至某个指定数据库的命令是什么?

答:执行“use 数据库名称”命令即可切换成功。


若想针对某个账户进行授权或取消授权操作,应该执行什么命令?

答:针对账户进行授权,需执行 GRANT 命令;取消授权则需执行 REVOKE 命令。


若只想查看 mybook 表单中的 name 字段,应该执行什么命令?

答:应执行 SELECT name FROM mybook 命令。


要想把 linuxprobe 数据库中的内容导出为一个文件(保存到 root 管理员的家目录中),应该执 行什么命令?

答:应执行 mysqldump -u root -p linuxprobe > /root/linuxprobeDB.dump 命令

如果想根据教程实践的朋友们可以通过阿里云ecs服务器免费试用和低价购买,入口如下

入口一:新人免费试用

入口二:大学生免费试用

入口三:低价服务器购买

入口四:低价服务器购买2

入口五:建站特惠购买

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
目录
相关文章
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
17 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
15 2
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
35 5
linux系统服务二!
|
3天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
18 3
|
6天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
23 6
|
6天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
30 6
|
7天前
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
29 5
|
7天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
22 3
|
7天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
20 3
|
7天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
24 3