Linux系統下以RPM方式安裝mysql-5.7.9?

Tags: 系統, 命令,

mysql-5.7.9 64位 RPM集合包在Linux系統中的安裝過程。因為我用的64位的CentOS7所以我下的是64位的集合包,如果你用的32位的Linux系統請下載32位的集合包。這裡我只講安裝,不解釋命令的使用方法,因為都是些比較常用的基本命令,不懂的,可以去網上找資料,或者下個Linux常用命令手冊。在安裝前我們可以先添加一個名為mysql的用戶組:groupadd mysql。再添加一個名為mysql的用戶到這個組中:

adduser -g mysql mysql。最後為這個用戶設置密碼:passwd mysql。不過,這步操作可有可無,顯麻煩的,可以略過。

工具/原料

Linux系列系統

mysql-5.7.9 64位 RPM集合包

方法/步驟

在開始安裝之前,我們先來一小段官方文檔,看下圖。圖中英文翻譯過來就是:

從MySQL5.7.4起,以RPM包的方式安裝後的MySQL的部署默認是安全的,並且有這些特點:

在大多數情況下,你只需要安裝MySQL-server和MySQL-client安裝包就可以安裝上一個標準功能的MySQL。對於一個標準安裝來說,其他的安裝包不是必需的。

MySQL的安裝程序會創建一個單獨的root賬戶:'root'@'localhost',並自動為這個賬戶生成一個初始的隨機密碼,並將此密碼標誌為已過期。

對於MySQL5.7.6和更高的版本來說,初始的隨機root密碼是被寫入錯誤日誌的。對於MySQL5.7.4和5.7.5版本來說,密碼是被寫入以HOME環境變量命名的目錄中的.mysql_secret文件中的。根據操作系統,可以使用諸如sudo這樣的命令讓HOME環境變量的值指向root系統用戶的home目錄。.mysql_secret文件是以只允許創建它的系統用戶訪問的600模式而創建的。(版本差異的產生,是因為自5.7.6版本起數據目錄和root賬戶由mysqld --initialize來初始化,5.7.6以前的版本由mysql_install_db來初始化)。

不創建MySQL匿名賬戶。

不創建測試數據庫。

作為上述操作所產生的結果,在安裝完成後你需要去啟動服務,以root身份,用初始的隨機密碼來進行連接,並且在連接後選擇一個新的密碼。在完成這些操作之前,root用戶無法做其他的任何事情。修改密碼,你可以用ALTER USER語句(例如,通過mysql客戶端)。重設密碼後,如果有創建.mysql_secret文件就把它刪除;否則,在你執行mysql_secure_installation這條命令的時候,可能會再次看到那個文件和過期的root密碼成為確認安全部署的一部分。

Linux系統下以RPM方式安裝mysql-5.7.9

本來我也是想省事,打算從網上找些安裝教程,但是基本上都是5.7.6版本以下的教程,害得我死活找不到.mysql_secret文件,mysql_install_db也執行不了。沒辦法我就去官網找文檔了,讓人頭暈的是竟然沒中文語言支持,沒辦法,英文也得看。這也就是我要把詳細版本號標出來的原因。首先,就是要下載,看下面3張圖:

Linux系統下以RPM方式安裝mysql-5.7.9

Linux系統下以RPM方式安裝mysql-5.7.9

Linux系統下以RPM方式安裝mysql-5.7.9

我先在Linux根目錄建了一個test目錄,執行命令:mkdir /test。然後把下載的安裝包傳到這個目錄中,至於怎麼傳,我就不講了,因為教程太多了。我們進入這個目錄,執行命令:cd /test。執行解包命令:tar -xvh mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar。在輸入安裝包名字的時候,記得使用Tab鍵來進行命令補全,不然你逐個敲就太浪費時間了。

解包之後,說實在的,我也有點頭大。我勒個去,居然有12個RPM包!不過,不要緊,我們再來回顧一下官方文檔中的這句話:

在大多數情況下,你只需要安裝MySQL-server和MySQL-client安裝包就可以安裝上一個標準功能的MySQL。對於一個標準安裝來說,其他的安裝包不是必需的。

怎麼樣,明白了吧?我們需要安裝的是mysql-community-client-5.7.9-1.el7.x86_64.rpm和mysql-community-server-5.7.9-1.el7.x86_64.rpm。當然為了不浪費口舌,我就直接說了。安裝時候會提示與已經安裝的RPM包有衝突,所以我們先卸載一些RPM包,要卸載哪些呢?我們要卸載的是包含有mariadb關鍵字的RPM包,執行命令:rpm -qa grep mariadb來查看一下我們要卸載哪些軟件,看下圖:

Linux系統下以RPM方式安裝mysql-5.7.9

既然知道了是哪些RPM包,就開始卸載吧!執行命令:

rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64

rpm -e --nodeps mariadb-server-5.5.41-2.el7_0.x86_64

rpm -e --nodeps mariadb-5.5.41-2.el7_0.x86_64

看下圖:

Linux系統下以RPM方式安裝mysql-5.7.9

卸載完了,我們就開始安裝吧!安裝前,先講一下,雖然官方文檔說安裝mysql-community-client-5.7.9-1.el7.x86_64.rpm和mysql-community-server-5.7.9-1.el7.x86_64.rpm就可以獲得標準功能的MySQL。但是由於RPM包的依賴關係,所以實際上我們還要多裝2個RPM包:mysql-community-common-5.7.9-1.el7.x86_64.rpm和mysql-community-libs-5.7.9-1.el7.x86_64.rpm。依次執行命令:

rpm -ivh mysql-community-common-5.7.9-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.9-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.9-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.9-1.el7.x86_64.rpm

注意:是依次執行,不要亂了順序,因為它們之間有依賴關係。看下面4張圖:

Linux系統下以RPM方式安裝mysql-5.7.9

Linux系統下以RPM方式安裝mysql-5.7.9

Linux系統下以RPM方式安裝mysql-5.7.9

Linux系統下以RPM方式安裝mysql-5.7.9

這樣我們就把MySQL安裝好了,當然最重點的地方也就來了,那就是初始化。來吧,又到了官方文檔時間段了,看下圖,圖中英文翻譯過來就是:

在Unix和Unix系列系統中,有一點是很重要的,那就是確保數據庫目錄與文件的所有者為mysql登錄賬戶,以便在你運行mysqld服務的時候,mysql服務可以對這些目錄和文件進行讀取與寫入操作。如果你是以root身份運行mysqld服務,就需要確認一下,執行如下面顯示的包含有--user選項的命令:

shell> bin/mysqld --initialize --user=mysql

shell> bin/mysqld --initialize-insecure --user=mysql

另外,當你是以mysql的賬戶登錄並執行程序的情況下,你可以將--user選項從命令中去掉。

所以我在前面提到過添加mysql用戶和mysql用戶組,當然這步操作可做可不做。通過官方文檔我們可以知道,如果我是root身份登錄Linux系統,可以執行:mysqld --initialize --user=mysql或者mysqld --initialize-insecure --user=mysql。如果我是以mysql用戶登錄Linux系統,可以執行:mysqld --initialize或者mysqld --initialize-insecure。

Linux系統下以RPM方式安裝mysql-5.7.9

再來看官方文檔,看下圖,圖中英文翻譯過來就是:

不管在哪個平臺上,使用--initialize選項就是以“默認安全模式”來進行安裝的(即包含一個隨機的root初始密碼的生成)。在這種情況下,密碼是被標誌為過期的,你需要選擇一個新的密碼。使用--initialize-insecure選項,沒有root密碼生成;如果是這樣的話,在服務器投入生產使用之前,你需要及時地為賬戶指定密碼。

通過官方文檔我們可以知道,使用--initialize會為root賬戶生成一個隨機的初始密碼,我們可以使用命令:mysql -u root -p,然後輸入密碼來登錄MySQL。使用--initialize-insecure不會為root賬戶生成一個隨機的初始密碼,我們可以使用命令:mysql -u root --skip-password直接登錄MySQL。

Linux系統下以RPM方式安裝mysql-5.7.9

初始化的操作我們要在/usr/bin目錄中進行,所以我們先進入/usr/bin目錄:cd /usr/bin。

然後,我是以root身份登錄Linux系統的,並且我想為root賬戶生成一個隨機的初始密碼,所以我要執行命令:mysqld --initialize --user=mysql;這樣就完成了對MySQL的初始化,併為root賬戶生成了一個隨機的初始密碼。

Linux系統下以RPM方式安裝mysql-5.7.9

我們來對上一步來作個補充,因為你有可能會用到,還是來看官方文檔,看下圖,圖中英文翻譯過來就是:

mysqld服務會檢查數據目錄是否存在,如下:

如果數據目錄不存在,mysqld則會創建它。

如果數據目錄存在,且不是空目錄(即包含有文件或子目錄),mysqld會顯示一條錯誤信息並中止:

[ERROR] --initialize specified but the data directory exists. Aborting.

遇到這種情況,就將數據目錄刪除或重命名後,重新再試一次。

我來簡單說明一下,也就是在初始化之前,先檢查一下數據目錄是否存在,執行命令:ls -l /var/lib grep mysql。若有,則執行命令:

rm -rf /var/lib/mysql,將其刪除;

或者執行命令:mv /var/lib/mysql /var/lib/newname,將其重命名為newname,就可以了。

Linux系統下以RPM方式安裝mysql-5.7.9

下面我們來看下root賬戶的隨機初始密碼,執行命令:

vi /var/log/mysqld.log

下圖紅線框中的字符就是密碼,把它記下來,登錄MySQL的時候要用:

Linux系統下以RPM方式安裝mysql-5.7.9

現在可以啟動mysqld服務了,執行命令:

systemctl start mysqld

我們來看下mysqld是否已經啟動了,執行命令:

systemctl status mysqld

如果看到的和下圖一樣,就說明已經啟動了:

Linux系統下以RPM方式安裝mysql-5.7.9

我們來對上一步作個補充,因為你也有可能會遇到。如果你在執行命令:

systemctl start mysqld時,出現了和下圖一樣的提示:

Job for mysqld.service failed. See 'systemctl status mysqld.service' and 'journalctl -xn' for details.

出現這樣的錯誤提示,我們先查看一下/var/lib/mysql-files目錄是否存在,執行命令:ls -ld /var/lib/mysql-files。如果不顯示任何信息就表示不存在,執行命令:mkdir /var/lib/mysql-files,創建/var/lib/mysql-files目錄。這時,我們試著執行命令:systemctl start mysqld。如果還出現和下圖一樣的提示,我們執行另一條命令:chown -R mysql:mysql /var/lib/mysql,將/var/lib/mysql目錄及其下所有文件和子目錄的所有者和所屬組都改為mysql。我們再執行一下:systemctl start mysqld應該就可以啟動mysqld服務了。

Linux系統下以RPM方式安裝mysql-5.7.9

準備工作全部就緒,來吧,登錄吧!執行命令:mysql -u root -p。要注意輸入密碼是不顯示的,不是你的鍵盤有問題,而是Linux的一種安全機制,只管輸入就行。看下圖:

Linux系統下以RPM方式安裝mysql-5.7.9

至此,所有工作就完了。最後不禁要感慨一下:真後悔當初沒好好學英語啊!好好學英語吧,童鞋們!

相關問題答案