實驗報告——MySQL的安裝

實驗報告——MySQL的安裝

一、原始碼安裝 MySQL

1、

系統環境:Centos7.3 x86_64

實驗報告——MySQL的安裝

因為 centos7。2 預設安裝了 mariadb-libs,為了避免發生埠衝突、程式衝突,所以先建議檢視是否安裝 mariadb,然後將其解除安裝掉。

實驗報告——MySQL的安裝

· 檢視是否安裝了mariadb

#rpm -qa | grep mariadb

· 解除安裝 mariadb

rpm -e mariadb-libs ——nodeps (——nodeps:忽略依賴關係,強制解除安裝)

2、安裝依賴包

cmake、ncurses、bison、boost、gcc

注: 相關依賴包的作用

·

cmake:

由於從 MySQL5。5 版本開始棄用了常規的 configure 編譯方法,所以需要 CMake 編譯器,用於設定 mysql 的編譯引數。如:安裝目錄、資料存放目錄、字元編碼、排序規則等。

·

ncurses:

計算機語言,是提供字元終端處理庫

·

bison:

Linux 下 C/C++語法分析器,是一個通用的解析器生成器,是屬於 GNU 專案的一個語法分析器生成器。bison 把一個關於“向前檢視 從左到右 最右”(LALR) 上下文無關文法的描述轉化成可以分析該文法的 C 或 C++ 程式。它也可以為二義文法生成 “通用的 從左到右 最右” (GLR)語法分析器。

·

Boost:

boost庫是一個可移植、提供原始碼的C++庫,作為標準庫的後備,是C++標準化程序的開發引擎之一。從 MySQL 5。7。5 開始 Boost 庫是必需的,mysql 原始碼中用到了C++的 Boost 庫,要求必須安裝 boost1。59。0 或以上版本

·

GCC:

是 Linux 下的 C 語言編譯工具,mysql 原始碼編譯完全由 C 和 C++編寫,要求必須安裝GCC。(一般都有安裝,可透過“gcc -v”檢視,如果系統上安裝了gcc編譯器,這條命令就會顯示出當前安裝的gcc編譯器是哪個版本;如果提示命令找不到,則表明沒有安裝。沒安裝的話,可以從系統自帶的光碟中安裝一哈)

1)安裝檔案準備

下載 cmake、ncurses、bison、Boost、mysql原始碼包(請忽略我一會所使用的原始碼包版本,比較舊。如果對版本要求嚴格的,可以從下面的連結地址或自己找官網進行下載,版本眾多,可以自由選擇,)

實驗報告——MySQL的安裝

2)安裝CMAKE 及必要的軟體

A.安裝 cmake

實驗報告——MySQL的安裝

B.安裝 ncurses

實驗報告——MySQL的安裝

C。

安裝 bison

實驗報告——MySQL的安裝

D.安裝 bootst

實驗報告——MySQL的安裝

3)建立 mysql 使用者和使用者組及目錄

實驗報告——MySQL的安裝

# groupadd -r mysql ——-建立msyql 組

# useradd -r -g mysql -s /bin/false -M mysql ——-建立msyql 使用者並禁止登入 shell

#mkdir /usr/local/mysql ——-建立目錄

#mkdir /usr/local/mysql/data ——-資料庫目錄

3、編譯安裝 mysql

解壓 mysql 原始碼包、執行 cmake 命令進行編譯前的配置、開始編譯、編譯安裝。如下圖:

實驗報告——MySQL的安裝

上圖中配置解釋:

· -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL 安 裝 的 根 目錄

· -DMYSQL_DATADIR=/usr/local/mysql /data:MySQL 資料庫檔案存放目錄

· -DSYSCONFDIR=/etc:MySQL 配置檔案所在目錄

· -DWITH_MYISAM_STORAGE_ENGINE=1:新增 MYISAM 引擎支援

· -DWITH_INNOBASE_STORAGE_ENGINE=1:新增 InnoDB 引擎支援

· -DWITH_ARCHIVE_STORAGE_ENGINE=1 :新增 ARCHIVE 引擎支援

· -DMYSQL_UNIX_ADDR=/usr/local/mysql /mysql。sock:指定 mysql。sock 位置

· -DWITH_PARTITION_STORAGE_ENGINE=1:安裝支援資料庫分割槽

· -DEXTRA_CHARSETS=all:使 MySQL 支援所有的擴充套件字元

· -DDEFAULT_CHARSET=utf8:設定MySQL 的預設字符集為utf8

· -DDEFAULT_COLLATION=utf8_general_ci :設定預設字符集校對規則

· -DWITH-SYSTEMD=1:可以使用 systemd 控制 mysql 服務

· -DWITH_BOOST=/usr/local/boost:指向 boost 庫所在目錄

4.安裝後的其他調整

1)最佳化執行路徑

實驗報告——MySQL的安裝

2)設定資料庫目錄的許可權

#chown -R mysql:mysql /usr/local/mysql ——-更改屬主,屬組。

實驗報告——MySQL的安裝

3)初始化資料庫

實驗報告——MySQL的安裝

注 1:MySQL 5。6 之前的版本執行下面初始化系統資料庫

#/usr/local/mysql/bin/mysql_install_db ——user=mysql ——basedir=/usr/local/mysql

——datadir=/usr/local/mysql/data

# 5。7 之後版本初始系統資料庫指令碼(圖中使用此方式初始化)

#/usr/local/mysql/bin/mysqld ——initialize-insecure ——user=mysql ——basedir=/usr/local/mysql

——datadir=/usr/local/mysql/data

注2:如果使用–initialize 引數初始化系統 資料庫 之後,會生成 root 使用者的一個臨時密碼, 如上圖示記所示。

4)建立配置檔案

# cd /usr/local/mysql/support-files ——-進入MySQL 安裝目錄支援檔案目錄

# cp my-default。cnf /etc/my。cnf ——-複製模板為新的配置檔案,

修改檔案中配置選項,老的版本一般有這個檔案,如果沒有這個檔案可以直接在/etc下編輯my。cnf檔案。如下圖所示,新增如下配置項

實驗報告——MySQL的安裝

5)配置MySQL自動啟動

實驗報告——MySQL的安裝

5.登入MySQL資料庫

#mysql -u root -p ——-回車輸入初始化時生成的隨機密碼

初始化生成的密碼比較複雜,很難記憶,所以可以更改密碼。如下圖

實驗報告——MySQL的安裝

至此MySQL資料庫的安裝就完成了。下面是我在做實驗過程中的報錯及解決方法。

二、記憶深刻

1.初始化的時候失敗

實驗報告——MySQL的安裝

解決方法:(/usr/local/mysql/data)data目錄下有檔案,刪了即可

2.資料庫啟動失敗

實驗報告——MySQL的安裝

服務啟動失敗,檢視錯誤日誌檔案

實驗報告——MySQL的安裝

在mysqld。service,把預設的pid檔案指定到了/var/run/mysqld/目錄,而並沒有事先建立該目錄,因此要手動建立該目錄並把許可權賦給mysql使用者。如下圖:

實驗報告——MySQL的安裝

上面這種方法是臨時的,因為/var/run下的目錄關機就沒了,最好採用下面修改檔案的方法:修改/usr/lib/system/system/mysqld。service,修改內容如下:

實驗報告——MySQL的安裝

#systemctl daemon-reload ——-過載服務

再次啟動mysql服務

實驗報告——MySQL的安裝

3.忘記了初始化產生的隨機密碼

在配置檔案/etc/my。cnf的mysqld下加skip-grant-tables跳過密碼認證

實驗報告——MySQL的安裝

重啟服務就可以無密碼登入了,無密碼登陸後修改密碼。如下圖:

實驗報告——MySQL的安裝

注:

1。mysql5。7以後mysql。user表中沒有了password欄位,而是使用authentication_string來代替。

2。註釋掉或刪除配置檔案/etc/my。cnf裡的skip-grant-tables (不刪除,密碼不會生效)

最後重啟服務,或載入配置檔案就生效了

4.需要重新執行cmake配置

若要重新執行cmake配置,需要刪除CMakeCache。txt檔案。

#make clean

#rm -f CMakeCache。txt

5.加快編譯速度的方法(

我沒用過,所以不知道是不是真的有效,這是偶然看到的,所以記了一下

實驗報告——MySQL的安裝

make -j $(grep processor /proc/cpuinfo | wc –l)

· -j 引數表示根據 CPU 核數指定編譯時的執行緒數,可以加快編譯速度。預設為 1 個執行緒編譯。

bin/mysqld ——initialize ——user=mysql ——basedir=/usr/local/mysql

——datadir=/usr/local/mysql/data

本文為個人實驗文件,不求認同,不做討論。