1. 程式人生 > >Linux系統下以RPM方式安裝mysql-5.7.9

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

原文 很好但是有幾點錯誤,更正一下.

 

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集合包

方法/步驟

 
  1. 1

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

     

    從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
  2. 2

    本來我也是想省事,打算從網上找些安裝教程,但是基本上都是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
  3. 3

    我先在Linux根目錄建了一個test目錄,執行命令:mkdir /test。然後把下載的安裝包傳到這個目錄中,至於怎麼傳,我就不講了,因為教程太多了。我們進入這個目錄,執行命令:cd /test。執行解包命令:tar -xvf 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
  4. 4

    既然知道了是哪些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
  5.  

    解除安裝完了,我們就開始安裝吧!安裝前,先講一下,雖然官方文件說安裝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

    (最後server這個會報錯: 

    CentOS安裝rpm安裝MySQL時爆出警告:

    warning: mysql-community-server-5.7.18-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

     原因:這是由於yum安裝了舊版本的GPG keys造成的

    解決辦法:後面加上

       --force --nodeps

    )

    注意:是依次執行,不要亂了順序,因為它們之間有依賴關係。看下面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
  6.  

    這樣我們就把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
  7.  

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

     

    不管在哪個平臺上,使用--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
  8.  

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

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

    Linux系統下以RPM方式安裝mysql-5.7.9
  9.  
  10. 初始化這個地方會報錯:error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

       (原因是沒有安裝libaio.so.1,安裝即可。

 

              Ubuntu下執行:apt-get install libaio1 libaio-dev

              Redhat/Fedora/CentOS下執行:yum install libaio

 

       )

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

  1.  

    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
  2.  

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

    vi  /var/log/mysqld.log

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

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

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

    systemctl  start  mysqld

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

    systemctl  status  mysqld

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

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

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

    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
  5.  

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

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

    最後還要講下怎麼修改密碼,從官方文件中我們瞭解到要用ALTER USER語句可以修改密碼。登入MySQL後,執行語句:

    alter user 'root'@'localhost'  identified  by  'mYsqL$%123';

    就將root賬戶的密碼修改為mYsqL$%123了。

    有一點需要注意,MySQL對使用者密碼安全性有所加強,所以設定的密碼必須包含有數字,大寫字母,小寫字母,特殊符號,如果你設定的密碼過於簡單,會提示:

    ERROR 1819 (HY000): Your password does NOT satisfy the CURRENT policy requirements。

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

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