MySQL数据库基础:从零开始的第一步【Linux】

前言

        各位小伙伴们,好久不见!近期,我的文章更新频率确实有些缓慢,在此诚挚地向大家道歉。这个月是我的期末考试月,正处于紧张的复习(也可以说是重新学习)阶段。尽管学业繁忙,但我依然坚持在知识的海洋中探索。

        今天,我将开启一个极具挑战性的全新专题——数据库。正如业界某位前辈曾言:数据库水平是衡量一名程序员专业程度的重要指标(注:这可不是我说的,如果有不同意见,请手下留情)。怀着对技术的热爱和探索的激情,我将开始书写数据库系列文章。

        既然废话已经说得差不多了,那就让我们一起,踏上数据库的奇妙旅程吧!

1.数据库相关环境的安装

        在学习数据库之前,首先最重要的就是如何安装数据库,数据库的种类有很多,今天小编讲述的是其中的MySQL数据库,为了更好的去掌握MySQL,小编并没有使用到MySQL的相关软件,而是直接使用的Linux终端来进行MySQL的学习,它有助于我们更好的去记住相关指令的记忆。下面我将会详细的讲述如何安装数据库。

1.使用的Linux环境

        小编目前使用的Linux版本是centos 7,虽然这个版本之后将不会再更新,但是对于我们学习Linux还是比较友好的。

2,卸载不要的环境

        我们需要输入下面的指令来卸载掉我们不需要的环境。

 ps ajx |grep mariadb # 先检查是否有mariadb存在#如果出现一大段数据,那么就代表着此时已经存在了systemctl stop mariadb.service # 停⽌mariadb 服务#之后再输入第一条指令,就可以看到服务已经成功停止了#会出现一小段数据,不要慌,这是停止成功的标志,这里我就不做实际演示了。

3.检查系统的安装包

        输入下面的指令,查看此时安装包是否存在。

​
grep mariadb
grep mysql    
#输入第二条指令,可能会出现下面的内容
#mysql-community-common-5.7.41-1.el7.x86_64
#mysql-community-server-5.7.41-1.el7.x86_64
#mysql57-community-release-el7-11.noarch
#mysql-community-client-5.7.41-1.el7.x86_64
#mysql-community-libs-5.7.41-1.el7.x86_64​

4.卸载默认安装包

        输入下面的指令。

sudo yum remove mariadb # 超级用户进行删除

5.获取MySQL中的官方yum源

        我们需要到官方网站去获取yum源,网址我放到后面了:Index of /232905,会看到如下的界面:

        此时需要找到和我们Linux系统一个版本的MySQL,这里可能很多读者看到蓝色字体是省略的,无法看到全称,这里小编教给各位一个技巧,此时我们可以鼠标右击空白处,选择查看页面源代码(或者快捷键:Ctrl + U)。

        此时我们就可以看见完整的蓝字了,这个操作是查看页面的源代码(用HTML写的,我之后可能也会点亮这一棵技能树),为了保持各位和我的运行环境一致,这里小编推荐采用5.7这个版本,如下,大约是在166行开始:

        这里我们需要安装和我们Linux系统环境一致的版本,可能不少读者不知晓自己的Linux的版本是多少,这里我推荐各位输入下面的指令:

 cat /etc/redhat-release

        此时我们可以看出当前我们centos的版本是7.9,所以我们选择el7.9即可(代表centos的7.9版本),我们点击它以后,就会下载相关的rpm文件,此时这个文件是下到我们的Windows磁盘当中的,我们需要将这个文件放入到我们Linux系统中,这个时候我们仅需采用下面的指令(或者直接把压缩包拖到终端):

rz;  #把Windows系统的相关文件等等放入到Linux中

6.将获取的yum源进行解压

        这个时候就可以就可以看到压缩包已经存在我们的/root路径下了,如下所示:

        类似是上面的压缩包,因为小编早已经安装成功,所以当时的压缩包我没找到,上面的当做样例即可,我们需要把.rpm样子的压缩包进行解压操作,此时使用到下面的指令即可。

rpm -ivh 压缩包的名字

        压缩完之后,为了查看我们是否成功的安装,可以输入下面的指令。

ls /etc/yum.repos.d/ -l

7.安装MySQL服务

        这里我们需要输入下面的指令进行安装MySQL(根据上面yum源的配置):

 yum install -y mysql-community-server  #安装服务器和客户端,这个指令其实也帮助我们安装了相关的C接口,后续我会在提到的

        不过不少读者可能在安装的时候遇到下面的报错:

Failing package is: mysql-community-client-5.7.39-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

        这句话代表着秘钥过期了,各位读者遇到这种情况不要慌张,输入下面的指令,再重新安装一次即可。

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

8.查看自己是否安装成功

        此时进行完上面的安装操作以后,按理说我们已经安装成功了,但是为了万无一失,我们需要进行两个操作来查看MySQL是否安装成功了。

1.查看配置文件

        输入下面的指令,如果和图片相符,那么代表第一个操作正确。

ls /etc/my.cnf

2.查看数据存储位置

        输入下面的指令,和图中相符的话代表是正确的。

ls /var/lib/mysql

        上面的蓝色文件夹不用管,有MySQL这个目录即可。如果上面两个指令都执行成功的话,那么说明此时我们安装成功了。

9.启动mysqld服务器

        此时我们输入下面的指令即可成功的启动服务器:

systemctl start mysqld.service

        之后我们查看服务器是否启动了,输入下面的指令。

ps axj |grep mysqld

        出现上图第一行内容,即可代表成功启动服务器了。

10.配置mysql配置文件

        此时我们通过vim打开相关mysql配置文件,进行相关配置,输入下面的指令。

vim /etc/my.cnf

        此时上面就是我们mysql相关配置的文件,在文件的最后,加入下面的代码:

skip-grant-tables  #代码没有密码就可以进行mysql的登录
#模仿上面的图片
port=3306 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
default-storage-engine=innodb
# 配置完毕,重启mysql即可

11.尝试登录mysql

        在进行上面的配置结束以后,此时我们可以输入下面的指令进行mysql的登录

mysql -uroot -p  #最好使用root账户,后续我会讲述用户管理操作

        此时会弹出让我们输入密码的提示:

        直接enter即可,因为上面我们配置了可以无须密码登录,所以此时确定即可。

        上面就代表着我们成功的进入了mysql界面,接下来我们的学习就要从这个界面喽~

2.数据库是什么

        安装完MySQL后,相信很多读者会产生疑问:MySQL是什么?数据库又是什么?下面我将为大家详细解答。

        通常,我们习惯于使用文件存储数据。然而,单纯依赖文件存储存在诸多弊端:

  1. 文件安全性脆弱,数据极易泄露或被非法篡改;

  2. 数据查询和管理效率低下;

  3. 不适合存储海量数据;

  4. 在实际编程中使用极不方便。

        因此,我们需要一种更高效、更安全的数据存储方案——数据库。

        数据库通常采用磁盘或内存存储,这种存储机制使其能够更高效、更灵活地管理和存储大规模数据。与传统文件存储相比,数据库在数据安全、检索速度和管理便捷性上都具有显著优势。所以,数据库其实就是一个存储大规模数据的‘文件夹’。

3.主流的数据库

        当今,数据库有很多的种类,这里小编就简单的拿几个比较常用的数据库来让各位了解主流数据库。

1.SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。

2.Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。小编这个学期的一门课就是oracle数据库,其实和MySQL大部分是很像的,只不过少部分函数不一样罢了。

3.MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。真的很好用。

4.PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。

5.SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

6.H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

4.表是什么

        当我们首次登录数据库的时候,输入下面的指令,就可以看到MySQL有几个数据库。

show databases;  #这条指令是查看MySQL中的数据库有几种,这里要提醒各位,数据库最后是需要;结尾的,这个点要注意。

        上面就是MySQL中的数据库,其实,MySQL中的数据库在Linux中,是以目录的形式存在的,也就是说当我们建立数据库的时候,其实就是在Linux下建立一个目录,此时我们在Linux中输入下面的指令,就可以看到上面的库。指令如下所示。

ll /var/lib/mysql/

        细细一看,这些目录不就是上面中我们查看到的数据库吗,所以这就证实了MySQL中的数据库,就是Linux下的一个目录,但是我们一般都不是对数据库进行操作,而是对数据库中的表进行操作。数据库的表其实就是Linux下的一个个文件,表里面都是存储一些重要的数据,就比如一个校园的数据库,存储的就是一个学生的姓名。学号等等,此时我在MySQL下输出一个指令,来让各位先来看看表是长什么样的。

        此时我们就可以看到表在MySQL的样子,同样的,我们也可以通过进入到目录查看目录下的一个个文件,其在Linux中的表示如下所示。

        这就是MySQL中的表,下面小标来讲一讲MySQL中,服务器,数据库以及表之间的关系。

4.服务器,数据库,表关系

        所谓安装数据库服务器,只是在机器上安装了一个数据库管理游戏程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。就比如学校的教务系统,后面应该就对应着一个存储学生数据的数据库。

        为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。就比如一个公司的数据库,可能里面会有各大分公司表,雇员表,以及奖金表。

        它们的三者的关系,如下所示:

        当然,我们进行建立数据库,创建表等等的操作,这些工作其实都是mysqld来帮助我们完成的,它是MySQL的服务器,而mysql数据MySQL的客户端,这一点各位要记住。

5.快速上手数据库

        为了让各位更好的知晓数据库应该如何进行操作,下面我简单的给各位简单的去使用一下相关的指令,各位目前无须记住,这些我都会在后来详细的讲述的。所以下面的操作,我就不解释了,仅仅想让各位看看数据库怎么使用。

1.创建一个数据库

create database boke_1;

2.看一眼是否创建成功

show databases;

3.进入数据库

use boke_1;

4.查看有几张表

show tables;  #此时没插入内容,所以为空

5.创建一个表

create table t1(name varchar(20) not null,tel varchar(20)
);

6.插入两组数据

insert into t1 values('小王','121212323'),('小李','1121212');

7.查看表内容

select* from t1;

        以上就是MySQL相关的简单操作,这些以后我都会教给各位的,各位目前光看一下就好。

6.MySQL架构

        MySQL是一个可移植的数据库,几乎可以在当前所有的操作系统运行,如UNIX/Linux,Windows、MAC。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。下面可以看下相关的架构图。

7.SQL分类

        一般来说,SQL是分为下面这三类的。

1.DDL【data definition language】数据定义语言,用来维护存储数据的结构。就比如:create,drop,alter【之后都会讲述】。

2.DML【data manipulation language】数据操纵语言,用来对数据进行操作。例如:insert,delete,update。

3.DCL【【Data Control Language】数据控制语言,主要负责管理和事务。例如:grant,revoke,commit。

8.存储引擎

1.是什么

        存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。MySQL的核心就是插件式存储引擎,支持多种引擎存储。

2.在哪里

        可能很多读者会很好奇,我们如何查看MySQL中的存储引擎呢?通过一条指令就可以查到。

show engines;

        这些我们稍作了解就好,小编所写的文章涉及到的存储引擎一般就是第一行那个,这点各位记住就好。

3.存储引擎对比

9.小结

        以上就是MySQL的安装流程以及相关的基础,希望各位好好掌握上面的知识点。这篇文章我自我认为写的没有那么完美,因为我感觉我仅仅学到了MySQL中的毛毛雨,还有更多的知识点等着我探索,这篇文章更像是我的随手笔记,如果有误,希望各位读者不要骂我骂的太惨(┭┮﹏┭┮)。一起学习的时光总是短暂的,那么各位大佬们我们下一篇文章见啦!

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

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

相关文章

502 Bad Gateway:服务器作为网关或代理时收到无效响应处理方式

502 Bad Gateway 错误是 Web 开发和服务器管理中常见的问题,通常表示网关或代理服务器收到无效响应。这种错误可能由多种原因引起,包括后端服务故障、网络问题或配置错误等。了解502错误的原因及其处理方式,对于维护网站的可用性和用户体验至…

Abel 变换,离散型分部积分

文章目录 零、引入:分部积分一、Abel 变换1.1 Abel 变换1.2 证明 二、一些比较浅显的应用2.1 等差 乘 等比型求和2.2 平方求和公式2.3 不等式证明 三、一些算法题的式子优化3.1 3500.将数组分割为子数组的最小代价3.2 D. Array Splitting3.3 300. 任务安排1 零、引入…

火山 RTC 引擎12----合流转推 集成

一、火山、网易 合流转推集成 1、 首次先要startPush,要不然,推不了流 void NRTCEngine::PushToCDN(std::string taskID, std::string url) {if (m_video == nullptr) return;bytertc::IMixedStreamConfig* config = getMixedStreamConfig(url);int ret = m_video->star…

基于STM32设计的物联网疫苗冷链物流监测系统

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状(1)国内研究现状(2)国外研究现状(3)技术演进趋势分析(4)现存技术缺口(5)关键案例技术对比表【6】摘要1.2 设计思路1.3 系统功能总结1.4 开…

音频中采样率和帧是什么?怎么理解?

视频中的“帧”是指一张图片,那么在音频中,“帧”的含义就完全不同了。理解音频中的“帧”概念,对做音视频处理、流媒体开发非常关键。 一、声音是怎么采集的? 音频采集是指通过麦克风等设备捕捉周围环境中的声波,并…

第三方检测护航软件登记:企业合规的技术通行证与市场信任基石

一、软件产品登记测试:合规化的必经之路 根据《软件产品管理办法》,所有上市软件必须通过第三方检测机构的专业评估,确保功能、性能、安全性等指标符合国家标准(如GB/T 25000系列)。这一强制性要求不仅规避了法律风险…

产品页不被收录的6个技术原因(非重复内容/爬虫限制类)

页面未被收录的原因可能藏在代码架构或服务器配置中 比如爬虫无法“看懂”你的动态内容,或是某个参数设置错误导致页面被判定为重复。 本文从技术排查角度出发,整理6个最易被忽视但直接影响收录的实操问题。 页面加载速度拖慢爬虫抓取 例如&#xff0…

如何在FastAPI中打造一个既安全又灵活的权限管理系统?

title: 如何在FastAPI中打造一个既安全又灵活的权限管理系统? date: 2025/06/16 08:17:05 updated: 2025/06/16 08:17:05 author: cmdragon excerpt: FastAPI权限系统通过依赖注入实现三级验证:身份认证、角色验证和权限校验。数据库模型包括用户、角色和权限注册表,支持…

通过Radius认证服务器实现飞塔/华为防火墙二次认证:原理、实践与安全价值解析

引言:数字化转型中的身份认证挑战 在数字化转型加速的今天,企业网络边界日益模糊,混合云架构、远程办公、物联网设备接入等场景对网络安全提出全新挑战。传统防火墙基于IP/端口的访问控制已无法满足动态安全需求,如何构建"持…

golang--context的使用指南与核心特性

Go 语言 context 包:使用指南与核心特性 一、context 的本质与设计目的 context 是 Go 语言中管理请求生命周期的核心机制,它提供了一套统一的方式来: 传递请求范围数据(如用户认证信息)控制跨 goroutine 的生命周期…

耗时3小时,把这两天做好的爬虫程序,用Python封装成exe文件

先执行命令如下: pip install pyinstaller py -m PyInstaller --log-levelDEBUG --add-data "config.ini;." nmpa_gui.py很快在dist目录下就有生成一个nmpa_gui文件夹,运行 nmpa_gui.exe,报错: 1️⃣初始化爬虫… 程序…

Linux下nginx访问路径页面

第一步:通过Xshell在虚拟机中下载nginx sudo apt-get install nginx 第二步:进入nginx配置页面 cd /etc/nginx 我这里创建了一个html文件夹 在进入去创建页面并且重新加载 boahuboahu-VMware-Virtual-Platform:/$ cd /etc/nginx boahuboahu-VMware-Vir…

三维视频融合怎么弄?三步实现精准投射与自由修剪

分享大纲: 1、场景引入:为什么你的三维场景视频融合效果不理想? 2、解决方案:捷码视频融合三步操作指南 3、捷码平台:低代码构建动态三维视界 在智慧城市中的安防领域,将实时视频与三维场景融合已是大势需求…

探索阿里云网络与CDN产品:解锁高效网络体验

阿里云网络产品概述 在云计算蓬勃发展的当下,网络作为连接计算、存储与用户的关键纽带,其重要性不言而喻。阿里云作为全球知名的云计算服务提供商,凭借其丰富且强大的网络产品体系,为企业数字化转型筑牢了坚实的网络根基&#xf…

深入理解C语言指针(二):从数组到多级指针的全面解析

作为C语言的核心概念,指针常常让初学者感到困惑。本文将从数组与指针的关系入手,逐步揭开指针在数组操作、函数传参以及多级指针中的神秘面纱,帮助你建立系统的指针知识体系。 一、数组名的双重身份:首地址与整体标识 在C语言中&a…

Windows PPT/word怎么pdf不降低分辨率,插入可编辑

Windows PPT/word怎么pdf不降低分辨率 下载软件Inkscape:Inkscape - Draw Freely. | Inkscape 然后使用Inkscape将你的PDF转为svg, 然后用office的PPT打开,将svg复制进PPT/word,然后保存就可以了 插入可编辑的(只能通过Mac的才可…

vue3 select 选中值时,即获得id,也获得name值并且输入框正确选中

1.获取 name和id 直接绑定对象 将 value 绑定为整个对象&#xff0c;通过 change 事件获取完整数据 value-key 绑定唯一标识 value 绑定为整个对象&#xff0c;通过 change 事件获取完整数据 <el-select v-model"selectedItem" change"handleChange"…

什么是Seata

Seata的实现原理主要围绕其核心架构&#xff08;TC/TM/RM&#xff09;和事务模式&#xff08;如AT、TCC等&#xff09;展开&#xff0c;通过协调全局事务与分支事务的协作保证数据一致性。以下是核心实现原理的详细解析&#xff1a; ⚙️ ​​一、核心架构协作机制​​ Seata通…

linux ARM64架构用户空间和内核空间的区分

一、ARM64 架构地址空间的「黄金分割」 ARM64&#xff08;ARMv8-A&#xff09;采用 48 位虚拟地址&#xff08;Linux 默认配置&#xff09;&#xff0c;总空间为 256TB&#xff0c;分为高低两个 128TB 区域&#xff1a; 1. 地址空间整体布局 虚拟地址空间&#xff08;48位&a…

51单片机重要知识点1

1. 在读IO口状态前必须先写该IO口1. 即让下拉MOS高阻断路。如&#xff1a; P221; KEYP22; 复位状态各IO口1的。另外大多数情况都不会IO口即做输入又做输出的。设计思想永远不要复杂化高难度编程&#xff0c;而要简单明了。 2.