初涉MySQL資料庫部署解析

weixin_50345481發表於2020-12-23


前言

MySQL資料庫在當今企業應用,測試模擬中較為普遍,需要對其有一點的瞭解並掌握是從事相關專業必不可少的要求。


一 資料庫

1.1 資料庫的基本概念

1.1.1 資料(Data)

描述事物的符號記錄
包括數字,文字,圖形,影像,聲音,檔案記錄等
以“記錄”形式按統一的格式進行儲存

1.1.2 表

將不同的記錄組織在一起
用來儲存具體資料

1.1.3 資料庫

表的集合,是儲存資料的倉庫
以一定的組織方式儲存的相互有關的資料集合

例如:Windows中的資料夾(資料庫),檔案(表),檔案中的內容(資料)

1.1.4 資料庫管理系統(DBMS)

是實現對資料庫資源有效組織(各種表之間建立聯絡),管理(查詢,刪除,增加)和存取的系統軟體

1.1.5 資料庫系統

是一個人機系統,由硬體,OS,資料庫,DBMS,應用軟體和資料庫使用者組成
使用者可以通過DBMS或應用程式運算元據庫

在這裡插入圖片描述

1.2 資料庫系統發展史

1.2.1 第一代資料庫

自20世紀60年代起,第一代資料庫系統問世
是層次模型與網狀模型的資料庫系統
為統一管理和共享資料提供了有力的支撐

1.2.2 第二代資料庫

20世紀70年代初,第二代資料庫——關聯式資料庫開始出現
20世紀80年代初,IBM公司的關聯式資料庫系統DB2問世,開始逐步取代層次與網狀模型的資料庫,成為行業主流
到目前為止,關聯式資料庫系統仍佔領資料庫應用的主要地位

1.2.3 第三代資料庫

自20世紀80年代開始,適應不同領域的新型資料庫系統不斷湧現
物件導向的資料庫系統,實用性強、適應面廣
20世紀90年代後期,形成了多種資料庫系統共同支撐應用的局面
一些新的元素被新增進主流資料庫系統中
   例如,Oracle支援的"關係物件”資料庫模型

1.3 當今主流資料庫介紹

1.3.1 SQL Server(微軟公司產品)

面向Windows作業系統
簡單,易用

在這裡插入圖片描述

1.3.2 Oracle(甲骨文公司產品)

面向所有主流平臺
安全,完善,操作複雜

在這裡插入圖片描述

1.3.3 DB2 (IBM公司產品)

面向所有主流平臺
大型,安全,完善

在這裡插入圖片描述

1.3.4 MySQL(甲骨文公司收購)

免費,開源,體積小

在這裡插入圖片描述

1.4 關聯式資料庫

1.關聯式資料庫系統是基於關係模型的資料庫系統

2.關係模型的資料結構使用簡單易懂的二維資料表

3.關係模型可用簡單的“實體—關係”(E-R)圖來表示

4.E-R圖中包含了實體(資料物件),關係和屬性三個要素

5.實體

也稱為例項,對應現實世界中區別其它物件的“事件”或“事物”(儲存資料的資料物件)
   如銀行客戶,銀行賬戶等

6.屬性

實體所具有的某一特性,一個實體可以有多個屬性
   如“銀行客戶”實體集中的每個實體均具體姓名,住址,電話等屬性

7.聯絡

實體集之間的對應關係稱為聯絡,也稱為關係
   如銀行客戶和銀行賬戶之間存在“儲蓄”的關係

8.所有實體及實體之間聯絡的集合構成一個資料庫

9.關聯式資料庫的儲存結構是二維表格

10在每個二維表中

每一行稱為一條記錄,用來描述一個物件的資訊
每一列稱為一個欄位,用來描述物件的一個屬性

1.4.1 關聯式資料庫應用

1.4.1.1 關係型資料庫

Oracle,MySQL
SQLServer,Sybase
Informix,access
DB2,FoxPRO

1.4.1.2 應用舉例

12306使用者資訊系統
淘寶賬號系統
聯通手機號資訊系統
銀行使用者賬號系統
網站使用者資訊系統

1.5 非關聯式資料庫介紹

1.非關聯式資料庫也被稱為NoSQL(Not Only SQL)

2.儲存資料不以關係模型為依據,不需要固定的表格式

3.非關係型資料庫的優點
  資料庫可高併發讀寫
  對海量資料高效率儲存與訪問
  資料庫具有高擴充套件性與高可用性
  
4.常用的非關聯式資料庫:Redis,mongoDB等

二 MySQL資料庫

2.1 MySQL資料庫介紹

    1.一款深受歡迎的開源關係型資料庫
    
    2.Oracle旗下的產品
    
    3.遵守GPL協議,可以免費使用與修改
    
    4.特點
      效能卓越,訪問穩定
      開源,無版許可權制,成本低
      多執行緒,多使用者
      基於C/S(客戶端/伺服器)架構
      安全可靠

2.2 MySQL商業版與社群版

1.MySQL商業版是由MySQL AB公司負責開發與維護,需要付費才能使用

2.MySQL社群版是由分散在世界各地的MySQL開發者,愛好者一起開發與維護,可以免費使用

3.兩者區別
  商業版組織管理與測試環節更加嚴格,會比社群版更穩定
  商業版不遵守GPL,社群版遵從GPL可以免費使用
  商業版可獲得7*24小時的服務,社群版則沒有

2.3 MySQL產品陣營

1.第一陣營:5.0-5.1陣營,可說是早期產品的延續

2.第二陣營:5.4-5.7陣營,整合了MySQL AB公司,社群和第三方公司開發的儲存引擎(資料庫處理資料的方式,支援的功能),從而提高效能

3.第三方陣營:6.0-7.1陣營,就是MySQL Cluster版本,為適用新時代對資料庫的叢集需求而開發

三 安裝部署MySQL

3.1 部署流程

編譯安裝MySQL
新增mysql安裝軟體包

1.安裝依賴包

[root@server1 ~]# yum -y install ncurses ncurses-devel bison cmake 

ncurses ncurses-devel : ncurses是字元終端下螢幕控制的基本庫
bison:用於自動生成語法分析器程式,實際上可用於所有常見的作業系統。Bison把LALR形式的上下文無關文法描述轉換為可做語法分析的C或C++程式。
cmake:CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。CMake 可以編譯原始碼、製作程式庫、產生介面卡(wrapper) 、還可以用任意的順序建構執行檔。

[root@server1 ~]# useradd -s /sbin/nologin mysql    建立一個不可登入使用者
[root@server1 ~]# ls -lh
[root@server1 ~]# tar zxvf mysql-boost-5.7.20.tar.gz   解壓縮

在這裡插入圖片描述
2.編輯配置

[root@server1 ~]# cd mysql-5.7.20/
[root@server1 mysql-5.7.20]# cmake \  
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
> -DSYSCONFDIR=/etc \
> -DSYSTEMD_PID_DIR=/usr/local/mysql \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
> -DMYSQL_DATADIR=/usr/local/mysql/data \
> -DWITH_BOOST=boost \
> -DWITH_SYSTEMD=1
[root@server1 mysql-5.7.20]# make && make install  編譯安裝


cmake \
-DCMAKE_ INSTALL_ PREFIX=/usr/ local/mysql \ #安裝目錄 安裝路徑
-DMYSQL_ UNIX_ ADDR=/usr/ local/mysql/mysql. sock \ #指定套接字檔案的儲存路徑
套接字:客戶端訪問mysql資料庫的一個介面
-DSYSCONFDIR=/etc      #配置my. cnf的目錄 配置檔案路徑,(根目錄)
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #主服務程式所在路徑 (程式檔案目錄)
-DDEFAULT_CHARSET=utf8 \ #預設字符集
-DDEFAULT_COLLATION=utf8_ general ci \ #預設編碼
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #啟用InnoDB引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \#啟用ARCHIVE引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #啟用BLACKHOLE引擎
-DWITH_ PERFSCHEMA_STORAGE_ENGINE=1 \ #啟用perfschema引擎
儲存引擎說白了就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料等技術的實現方法。
-DMYSQL_DATADIR=/usr/ local/mysql/data \ #資料儲存路徑  (資料庫目錄)
-DWITH_B0OST=boost \ #boost庫是為C++語言標準庫提供擴充套件的一些C++程式庫的總稱
-DWITH_SYSTEMD=1  這是MySQL 5.7原生支援Systemd的選項, 如果要是用systemctl啟動,就必須開啟。  (開機自啟動,管理mysql服務)

在這裡插入圖片描述

[root@server1 ~]# cd
[root@server1 ~]# chown -R mysql.mysql /usr/local/mysql/   設定屬主,屬組
3.編輯配置檔案
[root@server1 ~]# vi /etc/my.cnf
[root@server1 ~]# chown mysql.mysql /etc/my.cnf    設定屬主,屬組
刪除所有
新增

[client]     客戶端
port = 3306  訪問埠
default-character-set = utf8           預設字符集
socket = /usr/local/mysql/mysql.sock   套接字
[mysql]      執行使用者
port = 3306  執行埠
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]     程式
user = mysql 執行使用者
basedir = /usr/local/mysql        根目錄
datadir = /usr/local/mysql/data   使用者目錄
port = 3306
character_set_server = utf8             伺服器設定字元
pid-file = /usr/local/mysql/mysqld.pid  程式檔案
socket = /usr/local/mysql/mysql.sock
server-id = 1   資料庫id

模式,功能
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES


NO_ENGINE_SUBSTITUTION: 在開啟該MODE的情況下,在建立表時,如果指定的儲存引擎不存在或不支援,則會直接提示“ERROR”。
STRICT_TRANS_TABLES: 嚴格模式,進行資料的嚴格校驗,錯誤資料不能插入,報error錯誤。
NO_AUTO_CREATE_USER: MODE禁止的只是不帶"identified by”子句的grant語句,對於帶有"identified by”子句的grant語句,其並不會禁止。
NO_AUTO_VALUE_ON_ZERO: 該值影響自增長列的插入。預設情況下,在對自增主鍵插入NULL0,會自動生成下一個值。若開啟該MODE, 當插入0時,並不會自動生成下一個值。
NO_ZERO_IN_DATE: NO_ZERO_IN_DATE針對的是年不為0。
NO_ZERO_DATE: 該MODE會影響’0000-00-00的插入。實際效果還取決於是否開啟嚴格模式。在開啟嚴格模式,且同時開啟該MODE,是不允許’0000-00-00'插入的。
ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE過程中,如果資料被零除,則產生錯誤而非警告。如果未給出該模式,那麼資料被零除時MySQL返回NULL。
PIPES_AS_CONCAT: 將”||”視為字串的連線操作符而非或運算子,這和Oracle資料庫是一樣的,也和字串的拼接函式Concat相類似。
ANSI_QUOTES:啟用ANSI_QUOTES後,不能用雙引號來引用字串,因為它被解釋為識別符。

在這裡插入圖片描述

4.環境變數配置
設定修改環境變數,賦值到兩個路徑和自己追加到配置檔案,使mysql的命令可以在本地使用

[root@server1 ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@server1 ~]# echo 'export PATH' >> /etc/profile   全域性變數追加
[root@server1 ~]# source /etc/profile   生效,初始化配置檔案
[root@server1 ~]# echo $PATH  

在這裡插入圖片描述
5.初始化,無論是編譯安裝,二進位制安裝,還是yum,rpm,裝完mysql都是要初始化後才能使用。

[root@server1 ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
[root@server1 ~]# cd /usr/local/mysql/ 
[root@server1 mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/  拷貝
[root@server1 mysql]# systemctl daemon-reload   守護程式重新載入
[root@server1 mysql]# systemctl start mysqld  服務啟動
[root@server1 mysql]# cd
[root@server1 ~]# netstat -anpt | grep 3306  檢視埠狀態

在這裡插入圖片描述
6.設定自啟動

[root@server1 ~]# systemctl enable mysqld   自啟動
[root@server1 ~]# mysql  登入資料庫(初始登入,沒有密碼)

在這裡插入圖片描述

3.1.1 設定資料庫密碼

初始化密碼

方法一: mysqladmin -u root -p password

初次密碼是空的
修改mysql密碼

方法1:用SET PASSWORD命令
首先登入MySQL

格式: mysql> set password for 使用者名稱@localhost = password( ‘ 新密碼’);
例子: mysql> set password for root@localhost =password(123) ;

可簡寫為:

mysql> set password=password(' 123' ) ;

方法2:用mysqladmin

格式: mysqladmin -u使用者名稱-p舊密碼password 新密碼
例子: mysqladmin -uroot -p123456 password 123

方法3:用UPDATE直接編輯user表
首先登入MySQL

mysql
use mysql ;
mysql> update mysql. user set authentication_ string=password(' 111111) where user=' root’and
host=' localhost' ;
mysql> flush privileges;
登入mysq1
mysql -uroot -p111111

7.設定密碼為abc123

[root@server1 ~]# mysqladmin -uroot -p password 'abc123'   回車
再次回車
設定成功

登入資料庫

[root@server1 ~]# mysql -uroot -pabc123

在這裡插入圖片描述
以上資料庫基礎配置安裝完成


總結

通過以上知識的學習,可以對MySQL資料庫有了簡單理解,掌握,為後續的靈活運用打下了基礎。

相關文章