MySQL基礎知識(二)-超詳細 Linux安裝MySQL5.7完整版教程及遇到的坑
1.簡介
我們經常會在Linux上安裝MySQL資料庫,但是安裝的時候總是會這裡錯,那裡錯,不順利,今天整理了一下安裝流程,連續安裝來了兩遍,沒有遇到什麼大錯誤,基本上十分鐘左右可以搞定,教程如下。寫著一篇文章主要是答應別人要幫忙給他在Linux上安裝一下mysql(MySQL是5.7,Linux是centos7),然後自己提前實踐一下,不要關鍵時刻掉鏈子。古有劉備三顧茅廬,今有巨集哥三連資料庫。快來看看發生什麼事了!!!
2.環境
①Linux版本: Linux version 3.10.0-1127.8.2.el7.x86_64
②MySQL版本: mysql-5.7.37-linux-glibc2.12-x86_64.tar
2.1linux下如何檢視已安裝的centos版本資訊
1.Linux檢視當前作業系統版本資訊 cat /proc/version
Linux version 2.6.32-696.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Mar 21 19:29:05 UTC 2017
2.Linux檢視版本當前作業系統核心資訊 uname -a
Linux localhost.localdomain 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 athlon i386 GNU/Linux
3.linux檢視版本當前作業系統發行資訊 cat /etc/issue 或 cat /etc/centos-release
CentOS release 6.9 (Final)
4.Linux檢視cpu相關資訊,包括型號、主頻、核心資訊等 cat /etc/cpuinfo
3.準備安裝包
1.從MySQL官網下載。下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 巨集哥下載的是TAR。如下圖所示:
2.點選“No thanks, just start my download.”,如下圖所示:
4.檢測系統是否自帶安裝 MySQL和mariadb
為了避免不必要的麻煩,在安裝前巨集哥首先檢測系統是否自帶安裝 MySQL和mariadb。
4.1檢查命令
rpm -qa | grep mysql
rpm -qa | grep mariadb
4.2檢查結果檢視
從上圖中可以看出,巨集哥沒有其中任何一個。
如果有,輸入命令,回車,會返回如下結果:
mysql-libs-5.1.52-1.el6_0.1.x86_64
mariadb-libs-5.5.56-2.el7.x86_64
4.3解除安裝
如果出現上邊返回結果,證明有,要先進行解除安裝,分別輸入如下命令:
rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64 // 普通刪除模式 rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64 // 強力刪除模式,如果使用上面命令刪除時,提示有依賴的其它檔案,則用該命令可以對其進行強力刪除 rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
5.上傳安裝包
你如果是將安裝包下載到本地電腦了,就需要通過finalShell等其他可以遠端連線Linux的客戶端將安裝包上傳到伺服器。巨集哥這裡為了省事或者偷懶直接使用命令將安裝包直接下載到伺服器上。
5.1伺服器上下載MySQL5.7
1.下載MySQL5.7,輸入如下命令
cd /usr/local/ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar
2.修改為自己需要的版本號,當然如果沒有wget命令的話可以執行下面的命令安裝。
yum -y install wget
3.出現“Complete”,說明wget下載安裝成功。
4.然後使用wget繼續下載MySQL5.7的安裝包,輸入第一步的命令,如下圖所示:
5.等待一段時間後,下載安裝包完成,如下圖所示:
6.檢視安裝包大小並和官網安裝包大小作比較,大小差不多,如下圖所示:
6.MySQL5.7安裝
6.1解壓安裝包
1.輸入如下命令,解壓mysql安裝包:
tar -xvf mysql-5.7.37-linux-glibc2.12-x86_64.tar
2. 5.7.37的版本第一次解壓會得到兩個版本,還有一個是test,這裡直接用非test的。
3.解壓非test的壓縮包,輸入如下命令:
tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
4.檢視解壓後結果,如下圖所示:
6.2重新命名目錄
輸入如下命令:
mv mysql-5.7.37-linux-glibc2.12-x86_64 mysql
習慣上來說,我們會將資料夾重新命名為mysql
6.3建立mysql使用者組和使用者
輸入如下命令:
groupadd mysql
useradd -r -g mysql mysql
我們必須建立mysql使用者,因為mysql的初始化需要。
6.4建立資料目錄並賦予許可權
輸入如下命令:
mkdir -p /data/mysql #建立目錄
chown mysql:mysql -R /data/mysql #賦予許可權
通常都會將資料存放目錄外接到別的目錄,這樣子升級mysql不會影響歷歷史資料。
6.5修改配置檔案
mysql有一個配置檔案叫做my.cnf,我們會在配置檔案中指定埠,資料存放目錄,以及編碼格式。輸入如下命令:
vim /etc/my.cnf
把預設的內容註釋掉後者刪掉,巨集哥推薦最好是註釋掉,如果你要刪掉,最好拷貝一下做一下備份。改為下面的內容即可。
[mysqld] bind-address=0.0.0.0 port=3306 user=mysql basedir=/usr/local/mysql datadir=/data/mysql socket=/tmp/mysql.sock log-error=/data/mysql/mysql.err pid-file=/data/mysql/mysql.pid #character config character_set_server=utf8mb4 symbolic-links=0 explicit_defaults_for_timestamp=true [client] default-character-set=utf8 [mysql] default-character-set=utf8
這裡要注意,直接黏貼linux介面最後幾行可能會自動加上#,一定要檢查內容是否一致。
6.6初始化資料庫
1.進入MySQL的bin目錄。輸入如下命令:
cd /usr/local/mysql/bin/
2.初始化。輸入如下命令:
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
這裡要指定配置檔案,根目錄,資料檔案,使用者。
6.7檢視root使用者密碼
1.注意此時仍然在bin目錄下,輸入如下命令:
cat /data/mysql/mysql.err
初始化完成後,預設會生成一個root使用者的密碼,最後一行,如下位置。這裡要記住,後面登入的時候需要使用。
6.8啟動mysql服務
1.先將mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
2.啟動
service mysql start
到這裡說明MySQL已經安裝成功了。
7.修改密碼
看到那麼複雜的密碼是不是頭都大了,輸入麻煩而且不是很好記憶。那麼巨集哥就在這裡將密碼修改一下將其修改成:123456。步驟如下:
1.首先登陸MySQL,前面的那個是隨機生成的。登入mysql,修改root使用者的密碼
./mysql -u root -p #bin目錄下
2.密碼為初始化的時候生成的隨機密碼串(這裡的密碼就是前邊巨集哥讓你記住的那個密碼)。
3.登入後,然後執行下邊三條SQL語句修改密碼,在執行下面三步操作,然後重新登陸。
SET PASSWORD = PASSWORD('123456'); ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; FLUSH PRIVILEGES;
4.依次執行上面三條命令,這裡密碼設定為123456,當然生產上要符合密碼規範。
好了到這裡就安裝好啦,我們來遠端連線下。
8.遠端連線
8.2首次遠端連線(第一次)
1.這個時候如果使用遠端連線,你會發現無法連線。報錯如下圖所示:
2.出現上圖報錯的主要原因是:額。肯定是防火牆沒有關,也就是你MySQL服務對外的埠3306沒有開放。因為巨集哥CentOS7,預設是firewalld防火牆,巨集哥這是在演示,這裡直接關閉,輸入如下命令:
systemctl stop firewalld
3.正式環境下需要開放3306埠即可,絕對不允許向上一步簡單、粗暴方法,否則後果自負。依次輸入如下命令:
① 檢視防火牆的狀態:
systemctl status firewalld
② 開放3306埠:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
③ 重啟防火牆:
systemctl restart firewalld.service
8.2再次遠端連線(第二次)
1.當巨集哥將防火牆關閉,或者埠開放後,仍然連不上,報錯如下圖所示:
2.報上圖錯誤,額,這是因為我們的root使用者預設只能夠本機本地訪問,這裡要開放下,登入mysql,執行如下三條命令即可.
①首先輸入如下命令登入MySQL,輸入密碼。
./mysql -u root -p #bin目錄下
②執行下邊三條SQL語句
use mysql #訪問mysql庫 update user set host = '%' where user = 'root'; #使root能再任何host訪問 FLUSH PRIVILEGES;
8.3再次連線測試(第三次)
1.使用工具進行連線,輸入好登入行,點選“測試連線”如下圖所示:
好啦,古有劉備三顧茅廬,今有巨集哥三連資料庫。到這裡才是最終的打大功告成!
9.執行mysql命令
1.你可能也發現了,巨集哥每次執行mysql命令,都需要進入mysql的bin目錄,這樣有點麻煩不方便。但是不進入就會報如下圖所示的錯誤:
2.如果不希望每次進到bin目錄下使用mysql命令,則執行一下命令。你需要輸入如下命令:
ln -s /usr/local/mysql/bin/mysql /usr/bin
3.然後,不進入bin目錄,執行mysql命令,沒有報第一步的錯誤。如下圖所示:
10.小結
1.Linux執行tar解壓報錯tar: Error is not recoverable: exiting now
解決方案有兩種。
方案一:去掉解壓引數中的z,執行命令改為:tar -xvf xx.tar.gz。
該方案的原因是:下載的檔案並不是“通過 gzip 過濾歸檔”所以新增引數z就無法正常解壓。
如果該方案依舊無法進行正常解壓那就嘗試第二中方案。
方案二:重新下載或上傳壓縮檔案
本方案是針對下載的壓縮檔案並不完整,也就是說並沒有正常下載完成。可以換個方式重新下載。比如通過wget下載之後,執行出現上面問題。可以嘗試在其他機器上直接下載,然後上傳到目標伺服器上再執行上面的解壓命令,即可。
2.小夥伴們或者童鞋們,會發現巨集哥會用sudo這個命令,這是因為巨集哥現在登入的使用者admin,有些時候需要root使用者許可權,所以才會有sudo命令出現。
3.通過命令下載的安裝包,下載完成後,要注意下載安裝包和官網安裝大小的比較,如果差不多,那就沒有問題,但是相差較大的話,可能就是你下載的安裝包不完整,需要重新下載,萬一你為了省事沒有重新下載的話,直接安裝就會安裝失敗,此時再次安裝就需要你把系統中的MySQL全部解除安裝乾淨,否則再次下載完整的安裝包也有可能安裝不成功。