Linux服務器安裝兩個不同版本得MySQL數據庫

最近MySQL發佈了新版本,MySQL8.0,基於8.0做了諸多得優化,我們想在自己的業務中使用這個版本,但是爲了安全起見,需要做相關的測試工作。同時爲了保證其在相同的硬件工況下,所以我們選擇在同一個機器上部署5.7和8.0兩個不同的版本。因爲是兩個不同的版本,所以安裝的時候需要有較多注意的地方,下面我就針對這樣的一種背景對“同一機器安裝不同版本的安裝步驟進行一個記錄和分享”。
第一步,使用默認方式(普通安裝)
先選擇使用rpm安裝8.0版本,具體選擇哪個版本無所謂,都行,

  1. 首先去mysql網站上下載mysql社區版的完全包,分清32位還是64位。
    Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit), RPM Bundle
    wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar
  2. 安裝的準備工作
    安裝時候會提示與已經安裝的RPM包有衝突,所以我們先卸載一些RPM包。
    我們要卸載的是包含有mariadb關鍵字的RPM包,執行命令:rpm -qa|grep mariadb來查看一下我們要卸載哪些軟件。
    rpm -e 卸載,有可能因爲依賴卸載不掉。可以使用這個rpm -e --nodeps 忽略依賴卸載,也可以解決依賴。
  3. 卸載完了,我們就開始安裝吧
    首先解開包
    tar -xf mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar
    安裝前,先講一下,
    雖然官方文檔說安裝mysql-community-client-8.0.13-1.el7.x86_64.rpm和mysql-community-server-8.0.13-1.el7.x86_64.rpm就可以獲得標準功能的MySQL。
    但是由於RPM包的依賴關係,實際上我們需要安裝4個包,並且是按照順序的。
    rpm -Uvh --force mysql-community-common-8.0.13-1.el7.x86_64.rpm
    rpm -Uvh --force mysql-community-libs-8.0.13-1.el7.x86_64.rpm
    rpm -Uvh --force mysql-community-client-8.0.13-1.el7.x86_64.rpm
    rpm -Uvh --force mysql-community-server-8.0.13-1.el7.x86_64.rpm

這樣我們就把MySQL安裝好了,當然最重點的地方也就來了,那就是初始化。
初始化之前一定要配置你的my.cnf文件.默認路徑是/etc/my.cnf
生成密碼的初始化:mysqld --initialize --user=mysql
不生成密碼的初始化:mysqld --initialize-insecure --user=mysql
你也可以指定自己的目錄:
mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data

如果你不指定目錄,
mysql的basedir是/var/lib
mysql的datadir是/var/lib/mysql
mysql的cnf文件在/etc/my.cnf

在Unix系列系統中,有一點是很重要的,那就是確保數據庫目錄與文件的所有者爲mysql登錄賬戶,
以便在你運行mysqld服務的時候,mysql服務可以對這些目錄和文件進行讀取與寫入操作
如果你是以root身份運行mysqld服務,執行初始化命令時一定要帶有–user=mysql
當你是以mysql的賬戶登錄並執行程序的情況下,你可以將–user=mysql選項從命令中去掉。

mysql的命令在/usr/bin/ ,可以使用ll /usr/bin/ |grep mysql查看
mysql的文件在/var/lib,可以使用ll /var/lib |grep mysql查看
初始化的時候如果報錯。[ERROR] --initialize specified but the data directory exists. Aborting.
遇到這種情況,就將數據目錄刪除後,重新再初始化一次.

mysql的初始密碼在 /var/log/mysqld.log
在這句話後面的就是密碼[Note] A temporary password is generated for root@localhost:

啓動服務 systemctl start mysqld
查看服務 systemctl status mysqld

我們來對上一步作個補充,因爲你也有可能會遇到。如果你在執行命令:
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服務了。

連接數據庫
mysql -uroot -p;
修改密碼.
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘newpassword’;
設置開放遠程登陸
USE mysql;
SELECT host FROM user WHERE user = “root”;
UPDATE user SET HOST = ‘%’ WHERE user = “root”;
FLUSH PRIVILEGES;
grant all privileges on . to ‘root’@’%’;
GRANT ALL ON . TO ‘root’@’%’;
FLUSH PRIVILEGES;
SELECT host FROM user WHERE user = “root”;

如果有主從庫的話還要讓主從庫進行同步.看5.6的安裝指南即可

mysql8.0默認字符集是utf8mb4

這樣,我們的MySQL8.0就安裝好了。

第二步 安裝第二個版本
我選用了MySQL5.7的版本
第二個版本的MySQL不能再使用rpm的方式安裝了,需要換一種方式,這裏用源碼的方式安裝(使用tar.gz安裝包))

  1. 準備工作:下載tar.gz,鏈接:https://dev.mysql.com/downloads/mysql/5.7.html#downloads,選擇Linux通用包
  2. 解壓縮下載的xxxx.tar.gz文件,並重命名,注意自己存放的文件路徑名稱。
  3. 使用tar -zxvf xxx.tar.gz來解壓文件,根據自己的文件管理方式,對解壓後的文件進行重命名,方便後續的配置管理工作
  4. 創建數據庫配置文件,在你解壓的安裝包下,和bin同級目錄下創建一個文件夾etc,然後創建配置文件,一般名稱爲my.cnf 。其實在根目錄 /etc/my.cnf 有這個文件,所以只需要複製就行了,因爲在安裝8.0的時候已經產生了一個,所以複製過來就行。
#在目錄etc目錄下,執行命令
cp /etc/my.cnf ./

如圖和我的路徑
在這裏插入圖片描述
5. 編輯剛複製的my.cnf文件,由於我的服務器沒有vim命令,所以我就使用vi命令了 vi etc/my.cnf 。編輯如下內容

[root@localhost etc]# cat my.cnf 
[mysqld]
basedir= /home/soft/mysql5.7
datadir = /home/data/mysql5.7/data
port = 3308
socket = /home/soft/mysql5.7/mysql.sock

[client]
socket = /home/soft/mysql5.7/mysql.sock

#不區分大小寫
lower_case_table_names = 

在這裏插入圖片描述
6. 安裝依賴包,因爲是源碼安裝,需要有安裝依賴包

yum -y install make gcc-c++ cmake bison-devel ncurses ncurses-devel libaio-devel
  1. 指定配置文件初始化
./mysqld_safe --defaults-file=/home/soft/mysql5.7/etc/my.cnf  --user=root &

在這裏插入圖片描述
注意保存初始化密碼
8. 接着初始化數據庫

./bin/mysqld_safe --defaults-file=/home/soft/mysql5.7/etc/my.cnf  --user=root &

上面的命令注意結尾符號& ,接着執行mysql.server start,如果出現如下的問題,那就修改mysql.server文件
將mysql.server的內容修改:
basedir=你的路徑
datadir=你的路徑,改成如下圖所示
在這裏插入圖片描述
在這裏插入圖片描述
9. 啓動
修改好之後再執行 ./support-files/mysql.server start ,如果正確,該數據庫實例將正常啓動了,可以使用命令查看: netstat -tlunp
在這裏插入圖片描述
10. 如果沒有配置系統管理工具啓動,那麼機器重啓後需要手動重啓MySQL服務,可以指定配置文件的方式啓動

  ./mysqld --defaults-file=/home/soft/mysql5.7/etc/my.cnf --user=root &

11.其他
最後一步,登錄修改賬號配置
#./bin/mysql --socket=…/mysql.sock --port=3308 -u root -p
使用初始化的時候得到的密碼 xxxxx(前面初始化時候日誌裏的).;

進入後直接修改密碼,初始化密碼修改後才能操作。
mysql>alter user ‘root’@‘localhost’ identified by ‘123456’;
mysql>use mysql;
msyql>update user set user.Host=’%’ where user.User=‘root’;
mysql>flush privileges;
mysql>quit

找個客戶端遠程鏈接測試一下,是ok得

在這裏插入圖片描述

至此,兩個數據可以就都可以同時和諧共處了

(參考)[https://blog.csdn.net/u010898329/article/details/83064373]
(資料)[https://blog.csdn.net/itjin45/article/details/40303497]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章