Linux系統安裝MySQL(2020最新最詳細)

2020最新Linux系統發行版ContOS7演示安裝MySQL。

為防止操作許可權不足,建議切換root用戶,當然如果你對Linux命令熟悉,能夠自主完成許可權更新操作,可以不考慮此推薦。

更多命令學習推薦:

1、檢查安裝

   登錄Linux,命令檢查是否已經安裝過mysql,執行命令。如果沒有任何顯示資訊,則說明未安裝,如果存在資訊,則執行卸載。

1 [root@localhost ~]# rpm -qa | grep mysql    // 檢測系統是否自帶安裝 MySQL:
2 rpm -e mysql        // 普通刪除模式
3 rpm -e --nodeps mysql  // 強力刪除模式,如果使用上面命令刪除時,提示有依賴的其它文件,則用該命令可以對其進行強力刪除

  實際完成這第一步驟就可以卸載掉MySQL了,直接學習安裝即可。當然如果想清除更多卸載殘留(更完整的卸載),可以選擇第二步驟的方式卸載MySQL。

2、卸載MySQL

  當然如果在第一次檢測時就沒有顯示什麼,那麼這一步可以忽略……

  1、查看MySQL服務

    登錄Linux後執行service mysqld status 或者service mysql status命令查看MySQL服務狀態

 1 ####命令
 2 [root@localhost ~]# service mysqld status
 3 
 4 ####執行結果:標識沒有該服務
 5 Redirecting to /bin/systemctl status mysqld.service
 6 Unit mysqld.service could not be found.
 7 
 8 ####執行結果:標識服務已啟動
 9 [root@localhost ~]# service mysqld status
10 Redirecting to /bin/systemctl status mysqld.service
11 ● mysqld.service - MySQL Server
12 Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
13 Active: active (running) since 一 2020-10-19 10:54:07 CST; 2min 1s ago
14 Docs: man:mysqld(8)
15 http://dev.mysql.com/doc/refman/en/using-systemd.html
16 Process: 1563 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
17 Process: 1111 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
18 Main PID: 1579 (mysqld)
19 Tasks: 27
20 CGroup: /system.slice/mysqld.service
21 └─1579 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
22 
23 10月 19 10:53:01 localhost.localdomain systemd[1]: Starting MySQL Server...
24 10月 19 10:54:07 localhost.localdomain systemd[1]: Started MySQL Server.

  2、關閉MySQL服務(not be found就是沒找到服務,則忽略該步驟)  

    如果MySQL服務正在運行,則執行service mysqld stop或者service mysql stop命令停止MySQL服務

1 [root@localhost ~]# service mysql stop

  3、卸載MySQL

1 [root@localhost ~]# rpm -e --nodeps mysql     

  4、查找與MySQL相關的殘留目錄

    和Windows系統一樣,MySQL的卸載不僅僅是卸載程式,也需要刪除與程式相關的文件夾。才能保證卸載的完整性!

    使用命令:find   /  -name  mysql  或者  whereis   mysql

 1 ####find命令查詢:速度會慢點
 2 [root@localhost ~]# find / -name mysql
 3 find: 『/run/user/1000/gvfs』: 許可權不夠 4 /usr/lib64/mysql
 5 /usr/share/mysql
 6 
 7 ####whereis命令搜索,速度較快
 8 [root@localhost ~]# whereis mysql
 9 mysql: /usr/lib64/mysql /usr/share/mysql

  5、刪除殘留

    刪除殘留的目錄,只刪除MySQL目錄即可,當前登錄的已經是root許可權了,find查詢的結果對於許可權不足的,就無需操作了。

    命令:rm   -rf    目錄

1 [root@localhost mysql]# rm -rf  /usr/lib64/mysql/
2 [root@localhost mysql]# rm -rf  /usr/share/mysql

  6、刪除MySQL配置文件

    執行rm  -rf   /etc/my.cnf命令刪除/etc/my.cnf文件,執行rm  -rf   /etc/init.d/mysqld命令刪除/etc/init.d/下跟MySQL有關的全部文件,一般包括mysql文件或mysqld文件,如果存在mysql文件則執行:

    rm   -rf/etc/init.d/mysql命令

1 [root@localhost etc]# rm  -rf   /etc/my.cnf
2 [root@localhost etc]# rm  -rf   /etc/init.d/mysqld

  7、刪除mysql用戶及用戶組

    執行id mysql命令查看MySQL用戶及用戶組,執行userdel mysql命令刪除MySQL用戶及用戶組。

1 [root@localhost etc]# id mysql
2 uid=27(mysql) gid=27(mysql) 組=27(mysql)
3 [root@localhost etc]# userdel mysql

  再次執行大標題步驟1的檢查安裝命令,查看是否存在MySQL程式。

  和Windows系統一樣,MySQL的卸載不僅僅是卸載程式,也需要刪除與程式相關的文件夾。才能保證卸載的完整性!

3、安裝MySQL

  MySQL的安裝分為yum安裝、rpm安裝。通常大部分使用的MySQL版本是5.X的。本次案例演示使用版本MySQL-5.7

  (本次測試yum安裝)

1、YUM安裝MySQL

  1、安裝mysql源

    CentOS 7的yum源中默認沒有mysql,要先下載mysql的repo源(點擊此處)。並安裝它!

1 ######當前使用的是普通用戶下載
2 [xsge@localhost downfiles]$ wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
3 
4 ######軟體安裝需要切換root用戶:使用root賬戶安裝yum源
5 [root@localhost downfiles]# rpm -vih mysql80-community-release-el7-3.noarch.rpm
6 警告:mysql80-community-release-el7-3.noarch.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
7 準備中... ################################# [100%]
8 正在升級/安裝...
9 1:mysql80-community-release-el7-3 ################################# [100%]

    yum源的獲取方式如下圖

    訪問MySQL官網——選擇downloads——MySQL Community (GPL) Downloads》——MySQL Community Server

    MySQL官網地址://www.mysql.com/

    downloads在導航欄一般比較明顯。MySQL Community (GPL) Downloads》一般在頁面底部考上位置。MySQL Community Server自己找吧

     而後進入介面如下圖即可獲取yum源:

    

    點擊YUM大企鵝後,進入下面的介面:  

    

     進入下載介面:

  

     我們可以通過以下方法檢測是否已經成功安裝了yum源:命令:yum  repolist  enabled | grep “mysql.*-community.*”

1 [root@localhost downfiles]# yum repolist enabled | grep "mysql.*-community.*"
2 mysql-connectors-community/x86_64 MySQL Connectors Community                 165
3 mysql-tools-community/x86_64      MySQL Tools Community                      115
4 mysql80-community/x86_64          MySQL 8.0 Community Server                 193

  2、選擇安裝版本

  當你使用此方法進行安裝MySQL的時候,會默認安裝mysql的最新穩定版本(在我現在安裝的時候,最新版本為MySQL 8.0 Community Server )。如果這就是你想要安裝的,那麼你就可以忽略這步了。如果想要安裝以前的版本,比如5.6或者5.5,那麼就可以用下面的方法來配置了。

  首先我們先查看MySQL的那些源被禁用或者啟用了。

  命令:yum repolist all | grep mysql

 1 [root@localhost downfiles]# yum repolist all | grep mysql
 2 mysql-cluster-7.5-community/x86_64  MySQL Cluster 7.5 Community     禁用
 3 mysql-cluster-7.5-community-source  MySQL Cluster 7.5 Community - S 禁用
 4 mysql-cluster-7.6-community/x86_64  MySQL Cluster 7.6 Community     禁用
 5 mysql-cluster-7.6-community-source  MySQL Cluster 7.6 Community - S 禁用
 6 mysql-cluster-8.0-community/x86_64  MySQL Cluster 8.0 Community     禁用
 7 mysql-cluster-8.0-community-source  MySQL Cluster 8.0 Community - S 禁用
 8 mysql-connectors-community/x86_64   MySQL Connectors Community      啟用:    165
 9 mysql-connectors-community-source   MySQL Connectors Community - So 禁用
10 mysql-tools-community/x86_64        MySQL Tools Community           啟用:    115
11 mysql-tools-community-source        MySQL Tools Community - Source  禁用
12 mysql-tools-preview/x86_64          MySQL Tools Preview             禁用
13 mysql-tools-preview-source          MySQL Tools Preview - Source    禁用
14 mysql55-community/x86_64            MySQL 5.5 Community Server      禁用
15 mysql55-community-source            MySQL 5.5 Community Server - So 禁用
16 mysql56-community/x86_64            MySQL 5.6 Community Server      禁用
17 mysql56-community-source            MySQL 5.6 Community Server - So 禁用
18 mysql57-community/x86_64            MySQL 5.7 Community Server      禁用
19 mysql57-community-source            MySQL 5.7 Community Server - So 禁用
20 mysql80-community/x86_64            MySQL 8.0 Community Server      啟用:    193
21 mysql80-community-source            MySQL 8.0 Community Server - So 禁用

  比如我們看到現在啟用的是8.0版本系列的。我們需要安裝的是5.x系列的。那麼我們就可以執行以下命令:

  命令:

1 [root@localhost downfiles]# yum-config-manager --disable mysql80-community       ##禁用8.0版本的
2 [root@localhost downfiles]# yum-config-manager --enable mysql56-community       ##啟用5.6版本的(當然啟用哪個版本你自己定) 

上面的命令執行如果提示:-bash: yum-config-manager: 未找到命令 

那麼我們就需要安裝執行以下命令來安裝一個包:yum install -y yum-utils  執行成功之後就好了,那麼我們繼續執行上面的命令。

  啟用與禁用命令執行成功後,再次查看MySQL的哪些源被禁用:

 1 [root@localhost downfiles]# yum repolist all | grep mysql
 2 mysql-cluster-7.5-community/x86_64  MySQL Cluster 7.5 Community     禁用
 3 mysql-cluster-7.5-community-source  MySQL Cluster 7.5 Community - S 禁用
 4 mysql-cluster-7.6-community/x86_64  MySQL Cluster 7.6 Community     禁用
 5 mysql-cluster-7.6-community-source  MySQL Cluster 7.6 Community - S 禁用
 6 mysql-cluster-8.0-community/x86_64  MySQL Cluster 8.0 Community     禁用
 7 mysql-cluster-8.0-community-source  MySQL Cluster 8.0 Community - S 禁用
 8 mysql-connectors-community/x86_64   MySQL Connectors Community      啟用:    165
 9 mysql-connectors-community-source   MySQL Connectors Community - So 禁用
10 mysql-tools-community/x86_64        MySQL Tools Community           啟用:    115
11 mysql-tools-community-source        MySQL Tools Community - Source  禁用
12 mysql-tools-preview/x86_64          MySQL Tools Preview             禁用
13 mysql-tools-preview-source          MySQL Tools Preview - Source    禁用
14 mysql55-community/x86_64            MySQL 5.5 Community Server      禁用
15 mysql55-community-source            MySQL 5.5 Community Server - So 禁用
16 mysql56-community/x86_64            MySQL 5.6 Community Server      禁用
17 mysql56-community-source            MySQL 5.6 Community Server - So 禁用
18 mysql57-community/x86_64            MySQL 5.7 Community Server      啟用:    444
19 mysql57-community-source            MySQL 5.7 Community Server - So 禁用
20 mysql80-community/x86_64            MySQL 8.0 Community Server      禁用
21 mysql80-community-source            MySQL 8.0 Community Server - So 禁用

  好了,這時我們查看當前系統配置,僅顯示啟用MySQL命令:yum repolist enabled | grep mysql  

1 [root@localhost downfiles]# yum repolist enabled | grep mysql
2 mysql-connectors-community/x86_64 MySQL Connectors Community                 165
3 mysql-tools-community/x86_64      MySQL Tools Community                      115
4 mysql57-community/x86_64          MySQL 5.7 Community Server                 444

  可以開始安裝MySQL了。  

  3、使用YUM命令安裝

  執行以下命令來安裝(當前續接:演示安裝MySQL5.7)。安裝過程中會自動載入MySQL依賴,提示你是否下載,輸入y表示下載

1 [root@localhost downfiles]# yum install mysql-community-server

   4、MySQL命令管理

    安裝完成後驗證:

1 service mysqld start        #開啟MySQL服務    只要沒有錯誤資訊就表示已經正常啟動了。
2 service mysqld stop        #關閉MySQL服務
3 service mysqld restart      #重啟MySQL服務 
4 service mysqld status      #查看服務狀態

  5、MySQL密碼問題

    一些朋友可能發現安裝MySQL沒有密碼設置項的問題,有人說這是因為MySQL不需要密碼!這裡說明一下,MySQL5.7會在安裝後為root用戶生成一個隨機臨時密碼。但無論你安裝的MySQL是哪個版本,無論使用哪種方式安裝,無論是否需要密碼登錄,始終記住資料庫的安全大於一切,所以請設置密碼。又有人會問:如果能使用空密碼登錄,我登錄後面再設置密碼也行,可是有密碼時,我怎麼知道默認密碼是多少如何登錄呢?

    本次安裝的MySQL沒有設置密碼,但系統賦予了默認的且臨時的密碼,打開mysql默認日誌文件/var/log/mysqld.log,可以查看(前提,你剛剛安裝好MySQL,且沒有重複重啟服務)

    MySQL5.7版本以前,安裝後的默認密碼為空值(即沒有密碼)。

1 ####打開日誌文件查看
2 cat /var/log/mysqld.log
3 
4 或者
5 
6 ####搜索臨時密碼,在日誌文件中定位
7 grep 'temporary password' /var/log/mysqld.log

     拿到密碼後可以進行登錄,但是當我們執行SQL命令時就會報錯(提示我們必須先重置密碼)

1 ####登錄mysql
2 [root@localhost ~]# mysql -uroot -pve#LoVkeU2u!
3 
4 ####查看所有庫
5 mysql> show databases;

     MySQL安裝時默認安裝了 validate_password,MySQL的密碼策略比較複雜。這個插件要求密碼至少包含一個大寫字母,一個小寫字母,一個數字和一個特殊字元,並且密碼長度至少8個字元。過於簡單的密碼,不會被通過。(另請參考下面的附錄)

1 mysql> set password = password('MySQL5.7');      #### 重置MySQL(root)登錄密碼為MySQL5.7 
2 Query OK, 0 rows affected, 1 warning (0.00 sec)
3 
4 或者如下格式:
5 set password for 用戶名@localhost/ip/% = password('新密碼'); 

   6、禁止更新(推薦設置)

    我們在安裝之後,為了能夠正常運行,我們會禁止MySQL進行更新。因為在yum更新了MySQL之後,MySQL會自動重啟,這對於我們上線部署項目來說是沒有必要的,所以我們可以屏蔽更新。

    將下列程式碼放到你的/etc/yum.conf文件中即可:

1 exclude=mysql-community-client,mysql-community-common,mysql-community-libs,mysql-community-server

   7、更新MySQL(可選操作)

    如果想更新資料庫了怎麼辦?一般在生產環境,我們都是禁用更新的。所以說,如果需要更新,這裡只是作為一個參考。 執行的更新命令即可:

1 yum update mysql-server

    我們也可以指定更新單個組件。首先我們先運行以下命令來查看MySQL的組件列表:

1 [root@localhost ~]# yum list installed | grep "^mysql"
2 mysql-community-client.x86_64               5.7.31-1.el7               @mysql57-community
3 mysql-community-common.x86_64               5.7.31-1.el7               @mysql57-community
4 mysql-community-libs.x86_64                 5.7.31-1.el7               @mysql57-community
5 mysql-community-libs-compat.x86_64          5.7.31-1.el7               @mysql57-community
6 mysql-community-server.x86_64               5.7.31-1.el7               @mysql57-community
7 mysql80-community-release.noarch            el7-3                      installed

    使用以下命令實現更新任何一個組件包:(package-name就是你要更細的組件包名字)

1 yum update  package-name

  注意: 在使用 yum 更新之後,MySQL伺服器會自動重啟。

  到此基本的安裝就OK了。也可以使用命令了。

  7、防火牆設置(推薦配置)

  某些時候資料庫管理不可能進入機房,所以只能是遠程操作,且資料庫管理不是每個人都有root賬戶許可權的。所以:如果希望其他主機(或外部主機)可以訪問資料庫,則需要需要開放訪問埠,創建新管理賬戶,以及設置訪問許可權。

  如果有人疑問,為什麼要編寫防火牆設置這一段時,可以參考我編寫的Tomcat安裝防火牆設置的那部分!(安全問題)

  1、創建用戶並給用戶授權:允許在任意IP登錄

    Linux中的資料庫MySQL,root賬戶默認只能在本機(Linux系統中)訪問。(我們不建議直接修改root用戶的資訊)

1 ####創建用戶並授權
2 grant  all  on  *.*  to  'xsge'@'%'  identified  by  'SQLxsge1.';    #創建用戶xsge,密碼SQLxsge1.  授權所有許可權(all),允許正在任意主機登錄(%),任意庫任意表(*.*3 
----------------------------------如需其他修改請看參考下面的SQL----------------------------------- 4 ####修改xsge主機訪問許可權範圍(前提,該用戶xsge已經存在) 5 update mysql.user set host='localhost' where user='xsge';   #修改xsge賬戶訪問範圍:localhost只能在Linux系統本機訪問 6 7 ####修改許可權 8 Grant selectupdate on test.* to 'xsge'@'%';    #給xsge授權查詢,更新,test庫中所有表(test.*

  2、開啟防火牆mysql 3306埠的外部訪問

1 ####設置防火牆開放埠
2 [root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
3 success
4 ####重啟防火牆
5 [root@localhost ~]# service firewalld  restart
6 Redirecting to /bin/systemctl restart firewalld.service

  Game Over!!!

   8、資料庫亂碼問題(推薦設置)

  登錄MySQL查看編碼問題:

1 show variables like 'character_set%';

  修改mysql配置文件/etc/my.cnf。

[root@localhost ~]# vim  /etc/my.cnf    打開編輯模式,輸入i、I、a等進入插入模式,添加配置資訊,添加完成後,按ESC退出插入模式,輸入命令:wq 回車。保存並退出

  添加如下配置:(注意下圖中配置的所在位置,不要亂了,否則可能無法啟動資料庫服務了)

1 [mysqld]
2 character-set-server=utf8 
3 [client]
4 default-character-set=utf8 
5 [mysql]
6 default-character-set=utf8

 

 

   重啟MySQL服務,再次查看編碼。

 1 [root@localhost etc]# service mysqld restart    #重啟MySQL服務
 2 
 3 ####登錄資料庫
 4 [root@localhost etc]# mysql -uxsge -pSQLxsge1.
 5 ………………
 6 ####查看編碼
 7 mysql> show variables like 'character_set%';
 8 +--------------------------+----------------------------+
 9 | Variable_name            | Value                      |
10 +--------------------------+----------------------------+
11 | character_set_client     | utf8                       |
12 | character_set_connection | utf8                       |
13 | character_set_database   | utf8                       |
14 | character_set_filesystem | binary                     |
15 | character_set_results    | utf8                       |
16 | character_set_server     | utf8                       |
17 | character_set_system     | utf8                       |
18 | character_sets_dir       | /usr/share/mysql/charsets/ |
19 +--------------------------+----------------------------+

2、Yum 安裝其它的MySQL產品和組件(可選)

  查看一下有什麼可以安裝的MySQL產品和組件。

1 ####查看其它MySQL組件
2 [root@localhost ~]#  yum --disablerepo=\* --enablerepo='mysql*-community*' list available
3 
4 ####安裝MySQL組件,package-name組件的名字。
5 [root@localhost ~]# yum  install  package-name

3、RPM安裝MySQL

  1、下載MySQL安裝包

  手動下載或wget命令下載

看上去太多了
mysql-community-client-5.7.26-1.el7.x86_64.rpm
mysql-community-common-5.7.26-1.el7.x86_64.rpm
mysql-community-libs-5.7.26-1.el7.x86_64.rpm
mysql-community-server-5.7.26-1.el7.x86_64.rpm

可以直接選擇套件組(包含了MySQL依賴組價)
mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar

  命令下載:(在官網下載地址獲取下載連接即可)

1 wget  //dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar

  手動下載:下載Linux系統的MySQL安裝包。自己選擇一個一個下載,或者下載組件套。參考MySQL官網如下圖:

 

 

   如果是手動下載,下載後將文件mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar通過XFTP上傳到Linux系統目錄中。

  2、安裝MySQL

  1、解壓資源:mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar,獲取rpm包。

  2、安裝

    安裝順序 common–>libs–>client–>server

1 # 安裝順序
2 # common --> libs --> clients --> server
3 
4 # 安裝命令
5 rpm -ivh mysql-community-common-5.7.19-1.el6.x86_64.rpm mysql-community-libs-5.7.19-1.el6.x86_64.rpm mysql-community-client-5.7.19-1.el6.x86_64.rpm mysql-community-server-5.7.19-1.el6.x86_64.rpm

  3、可能需要依賴包libaio

    安裝命令:yum -y install libaio

  4、初始化

    命令:mysqld –initialize –user=mysql

  5、查看登錄密碼,服務、修改密碼、遠程訪問等同上!!!(略)

4、附錄

    如果上面的方式不能修改可以使用下面安全模式修改root:

    打開/etc/my.cnf文件,加上一行skip-grant-tables,表示跳過安全檢查(即登錄時無需密碼)。直接用mysql -uroot登錄,即可登錄成功。切換到mysql庫,查看user表結構,需要注意的是5.7以上版本已經沒有了Password欄位,取而代之的是authentication_string欄位。執行sql語句修改密碼:update user set authentication_string=’密碼’ where User=’root’; 或者5.6及以下版本使用:update user set Password=’密碼’ where User=’root’; 然後FLUSH PRIVILEGES即可。

    注意:修改成功後,要刪掉配置文件中的skip-grant-tables,否則誰都可以登錄了。

 

Tags: