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
英文地址,請注明出處:http://en.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.