linux下使用MariaDB數據庫的過程

首先對於Centos7的系統,他是自帶的MariaDB數據庫的,可以使用

sudo rpm -qa | grep mariadb

在這裏插入圖片描述
但是阿里雲服務器中好像是沒有這個數據庫的,需要自己下載;如果虛擬機中的MariaDB數據庫中缺少什麼東西,再下載就好了

yum -y install mariadb-devel
yum -y install mariadb-server

前期準備

  1. 查看mariadb數據庫的狀態
service mariadb status

在這裏插入圖片描述

  1. 關閉mariadb數據庫服務
service mariadb stop

在這裏插入圖片描述

  1. 開啓mariadb數據庫服務
service mariadb start

在這裏插入圖片描述
中間所需要使用的密碼是root用戶的密碼

  1. 配置登錄文件
    一開始的時候,我們沒有設置數據庫的登錄密碼,可以使用這個方式,先跳過登錄時的權限驗證,等到成功登錄後,再進行設置登錄密碼。
sudo vim /etc/my.cnf

//插入
skip-grant-tables  #跳過數據庫權限驗證

這樣就可以免密登錄數據庫了
在這裏插入圖片描述

  1. 重啓數據庫
service mariadb restart
  1. 查看版本信息
select version();

數據庫操作

  1. 登錄數據庫
mysql -u root

在這裏插入圖片描述

  1. 切換到MySQL數據庫
use mysql

在這裏插入圖片描述

  1. 更新數據庫的登錄密碼
	update user set password=password('新的密碼')
    where user='root' and host='localhost';

刷新MySQL權限相關的表

flush privileges; 

在這裏插入圖片描述

  1. 退出數據庫
quit;
  1. 使用密碼進行登錄數據庫

先在/etc/my.cnf文件中註釋掉剛纔加入的跳過權限驗證語句
在這裏插入圖片描述
在重啓mariadb數據庫後,使用密碼進行登錄

mysql -u root -p

這裏的密碼和root用戶登錄時的密碼一樣,都是不會顯示出來的
在這裏插入圖片描述

MySQL 的連接原理

MySQL所佔用的端口號爲3306,我們啓動MySQL服務端後,使用命令查看這個端口後

netstat -anp | grep 3306

在這裏插入圖片描述
可以看到他使用的TCP協議

我們在啓動MySQL服務端時,會先啓動守護進程mysqld,再連接MySQL服務端。這樣我們在使用的過程中,萬一MySQL服務端崩潰的時候,就可以使用守護進程重新拉起MySQL服務端。

ps aux | grep mysqld

在這裏插入圖片描述
在這裏插入圖片描述

  • 選擇連接的協議:

當客戶端發起連接的時候,服務端的處理過程

連接層中:

  1. 用戶驗證
  2. 選擇連接的協議

我們在自己的主機上連接的時候,也就是本地的MySQL客戶端,那麼是不用走網絡協議棧的,只是通過域套接字來完成客戶端與服務端的進程間通信

在這裏插入圖片描述
我們在linux下進行連接(本地客戶端)的時候,3306這個端口並沒有產生新的連接;但是我們在windows下進行連接(遠端客戶端)的時候,就發生了一次TCP連接。(telnet,使用時需要打開linux中的23和3306兩個端口)

域套接字

就是創建的一個文件,然後客戶端和服務端通過這個文件來進行通信(也就是進程間通信
在這裏插入圖片描述
因爲通信是通過文件來完成的,所以接收數據和發送數據使用的是文件操作,read,write

  1. 創建線程對客戶端進行服務(多線程通信)

server層中:

  1. 檢查SQL語句的語法是否正確
  2. 語義分析
  3. 權限檢查,判斷當前用戶是否有對該表操作的權限
  4. 分析SQL語句的查找方案,選擇一個執行效率最高的方案
  5. 執行SQL語句 --》 存儲引擎去執行

存儲引擎

相當於是一個Linux操作系統中的文件文件系統。不同的存儲引擎,可以決定着數據的存儲方式,索引類型,事務等方式。

而其中的數據都是在磁盤中的。

基本操作

sql語句即爲結構化的查詢語句,其中數據庫定義語言(DDL),數據庫操作語言(DCL),數據庫修改語言(DML)

  1. 使用數據庫
use [數據庫的名稱];  #可以切換數據庫
  1. 查看當前數據庫中的數據表
show tables;
  1. 數據庫的創建
create database [數據庫的名稱] charset=[字符集];
  1. 查看創建的數據庫的過程
show create database [數據庫的名稱];

在這裏插入圖片描述
如果MySQL的版本大於4.0,就默認採用latin1字符格式。

常見的幾個字符集

  1. ASCII字符集:採用的是1個字節的低7位表示字符,高位始終爲0
  2. LATIN1字符集:相對於ASCII字符集而言,他啓動了最高位
  3. GBK字符集:支持了中文字符,字符所佔的大小爲1個字節或者2個字節
  4. UTF8字符集:Unicode字符集,他支持所有國家的文字字符,用1-4個字節來表示字符大小

在這裏插入圖片描述
當我們使用默認的字符集的時候,我們對一個表中插入中文字符,就會顯示爲亂碼的格式。

這就是因爲中文字符一般都是1-4個字節,但是默認的LATIN1字符集卻只有一個字節的大小,就會發生截取的現象,讀取後就會出現亂碼。(本來是一個數據,卻被分成了幾份顯示)
在這裏插入圖片描述
發生亂碼的原因就是前後端字符集不匹配

  1. 查詢數據庫中的字符集格式
show variables like '%character%';

在這裏插入圖片描述

校對規則

校對規則有什麼用呢? 當我們想要對插入的數據進行排序的時候,如果數據是一個(dcl)和(DCL),那麼該怎麼進行排序。。。。

校對規則的種類

  1. 區分大小寫,他的規則的後綴爲_cs
  2. 不區分大小寫,他的規則的後綴爲_ci
  3. 後綴爲_bin,表示以二進制進行區分,這也是大小寫敏感的
show collation; # 查看校對規則

校對規則的特徵:

  1. 不同的字符集有不同的校對規則
  2. 每一個字符集都有自己的默認校對規則
    (UTF8字符集的默認校對規則爲utf8_general_ci),不區分大小寫

MySQL 是不區分大小寫的

create databases [數據庫名稱]
collate [校對規則];

在這裏插入圖片描述

刪庫

drop database [數據庫名稱];

注意:刪除的數據庫如果沒有備份,那麼是不可能進行還原的。(跟linux中的 rm 命令是一個道理)

  • 數據庫的備份
mysqldump -P[端口] -u[用戶] -p[密碼] -B[數據庫的名稱] > 數據庫備份存儲文件的路徑;

在這裏插入圖片描述
然後這個.sql的文件中,所存儲的就是在這個數據庫中所有執行的語句在這裏插入圖片描述

  • 備份的還原
source [備份數據庫文件的路徑,相對路徑,絕對路徑都可以];

在這裏插入圖片描述

  • 表備份
mysqldump -P[端口] -u[用戶] -p[密碼] 數據庫名稱  表1 表2... > 數據表備份存儲的文件路徑;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章