在同一Linux下安裝兩個(gè)版本的MySQL的流程步驟
摘要:
打工人奉旨制作數(shù)據(jù)庫服務(wù)的虛擬機(jī)模板,模板中包含各種數(shù)據(jù)庫,其中mysql需要具備5.7及8.0兩個(gè)版本,并保證服務(wù)能正常同時(shí)使用。此文也當(dāng)成一份筆記,方便后續(xù)自己查閱。
本次安裝基于截止于寫稿時(shí)最新的MySQL版本,mysql 5.7.41以及mysql 8.0.33,通過官方提供的編譯文件壓縮包(tar.gz),非rpm安裝文件。
1. 下載
官網(wǎng)MySQL :: Download MySQL Community Server (Archived Versions)下載需要版本的mysql
mysql-5.7.41-el7-x86_64.tar.gz
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.41-el7-x86_64.tar.gz
mysql-8.0.33-el7-x86_64.tar.gz
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-el7-x86_64.tar.gz
2. 安裝
2.1 準(zhǔn)備
2.1.1 路徑規(guī)劃
服務(wù)器上通過LVM掛在規(guī)劃 /u01 路徑用于安裝應(yīng)用,/u01路徑用于存儲(chǔ)數(shù)據(jù)
創(chuàng)建文件夾:
[root@localhost ~]# mkdir -p /u01/mysql #安裝包解壓到此路徑下 [root@localhost ~]# mkdir -p /u02/mysql/mysq57/data [root@localhost ~]# mkdir -p /u02/mysql/mysq57/logs [root@localhost ~]# mkdir -p /u02/mysql/mysq80/data [root@localhost ~]# mkdir -p /u02/mysql/mysq80/logs
2.1.2 解壓
將兩個(gè)tar.gz壓縮包上傳到服務(wù)器的/u01/mysql路徑下,解壓后得到與壓縮包名一致的文件夾,將文件夾重命名(主要為了路徑簡短好記)
[root@localhost mysql]# tar -zxvf mysql-5.7.41-el7-x86_64.tar.gz [root@localhost mysql]# mv mysql-5.7.41-el7-x86_64.tar.gz mysql-5.7.41 [root@localhost mysql]# tar -zxvf mysql-8.0.33-el7-x86_64.tar.gz [root@localhost mysql]# mv mysql-8.0.33-el7-x86_64.tar.gz mysql-5.0.33
如下:(安裝完后我已將壓縮包刪除,并且安裝過程中會(huì)變更文件所有人,故下圖僅有兩個(gè)文件夾,且文件夾的所有者都是mysql,基于root操作的此時(shí)的所有者應(yīng)該是root)
2.2 配置
2.2.1 刪除/重命名/etc/my.cnf
/etc/my.cnf是mysql默認(rèn)且優(yōu)先讀取的配置文件,第二順位是安裝路徑下的my.cnf,由于我們需要裝載兩個(gè)mysql且互不干擾,所以需要?jiǎng)h掉第一順位的配置文件。
2.2.2 為兩個(gè)mysql分別創(chuàng)建配置文件my.cnf
創(chuàng)建 /u01/mysql/mysql-5.7.41/my.cnf 以及 /u01/mysql/mysql-8.0.33/my.cnf,文件內(nèi)容如下:
/u01/mysql/mysql-5.7.41/my.cnf:
[mysqld] port=3357 user=mysql basedir=/u01/mysql/mysql-5.7.41 datadir=/u02/mysg/mysgl57/data socket=/tmp/mysql57.sock log-error=/u02/mysql/mysql57/logs/mysql.err pid-file=/u02/mysql/mysql57/mysql.pid character_set_server=utf8mb4 lower_case_table_names=1 [mysqld_safe] log-error=/u02/mysql/mysql57/logs/mysql.err pid-file=/u02/mysql/mysql57/mysql.pid tmpdir=/tmp/mysql57
/u01/mysql/mysql-8.0.33/my.cnf :
[mysqld] port=3380 user=mysql basedir=/u01/mysql/mysql-8.0.33 datadir=/u02/mysg/mysgl80/data socket=/tmp/mysql80.sock log-error=/u02/mysql/mysql80/logs/mysql.err pid-file=/u02/mysql/mysql80/mysql.pid character_set_server=utf8mb4 lower_case_table_names=1 [mysqld_safe] log-error=/u02/mysql/mysql80/logs/mysql.err pid-file=/u02/mysql/mysql80/mysql.pid tmpdir=/tmp/mysql80
2.2.3 配置service啟動(dòng)文件
以mysql5.7.41為例,編輯 /u01/mysql/mysql-5.7.41/support-files/mysql.server
將文件的第46、47、58、63、207行,將對應(yīng)信息配置為我們安裝的真實(shí)路徑,如下:
/u01/mysql/mysql-8.0.33/support-files/mysql.server 如是
將編輯好的/u01/mysql/mysql-5.7.41/support-files/mysql.server、/u01/mysql/mysql-8.0.33/support-files/mysql.server復(fù)制到 /etc/init.d/ 下,并命名為 mysql57 和 mysql80,后面通過service命令啟動(dòng)服務(wù)會(huì)用到
[root@localhost ~]# cp /u01/mysql/mysql-5.7.33/support-files/mysql.server /etc/init.d/mysql57 [root@localhost ~]# cp /u01/mysql/mysql-8.0.33/support-files/mysql.server /etc/init.d/mysql80
2.2.4 創(chuàng)建mysql用戶并更改路徑所有者
[root@localhost ~]# groupadd mysql [root@localhost ~]# useradd -r -g mysql mysql [root@localhost ~]# chown -R mysql.mysql /u01/mysql [root@localhost ~]# chown -R mysql.mysql /u02/mysql
2.3 初始化數(shù)據(jù)庫
進(jìn)入到安裝路徑下的bin目錄,以mysql 5.7.41為例
[root@localhost ~]# cd /u01/mysql/mysql-5.7.41/bin [root@localhost bin]# ./mysqld --defaults-file=/u01/mysql/mysql-5.7.41/my.cnf --basedir=/u01/mysql/mysql-5.7.41 --datadir=/u02/mysql/mysql57/data --user=mysql --initialize [root@localhost bin]# service mysql57 start Starting MySQL.....SUCCESS!
至此,mysql5.7.41安裝并啟動(dòng)成功,mysql8.0.33如是,最后通過service msyql80 start 進(jìn)行啟動(dòng)
3. 登錄數(shù)據(jù)庫服務(wù)器
在數(shù)據(jù)庫初始化過程中,會(huì)隨機(jī)生成root密碼,記錄在我們配置的log-error文件中
[root@localhost bin]# cat /u02/mysql/mysql57/logs/mysql.err | grep password 2023-07-19T08:23:56.987382Z 1 [Note] A temporary password is generated for root@localhost: #Bdm6F?J!2
信息中顯示的【#Bdm6F?J!2】就是初次登錄需要用到的密碼,登錄mysql5.7.41數(shù)據(jù)庫并修改root的密碼,打開遠(yuǎn)程訪問限制(依然在安裝目錄的bin目錄下)
[root@localhost ~]# cd /u01/mysql/mysql-5.7.41/bin [root@localhost bin]# ./mysql -uroot -p -S /tmp/mysql57.sock Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.41 Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> set password = password('root.123'); #修改root密碼 Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> update user set host = '%' where user='root'; #開啟root的遠(yuǎn)程訪問權(quán)限 Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.02 sec) mysql> exit Bye [root@localhost bin]# service mysql57 restart #重啟服務(wù)
mysql 8.0.33操作類似,但需要注意的是8.0版本在首次登錄時(shí)修改密碼的語法與5.7的不一樣,下面是mysql 8.0.33首次登錄及修改密碼的過程:
[root@localhost ~]# cd /u01/mysql/mysql-8.0.33/bin [root@localhost bin]# ./mysql -u root -p -S /tmp/mysql80.sock Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.33 Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> alter user 'root'@'localhost' identified by 'root.123'; Query OK, 0 rows affected (0.08 sec) mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> update user set host= '%' where user='root'; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye [root@localhost bin]# service mysql80 restart Shutting down MySQL.. SUCCESS! Starting MySQL...... SUCCESS!
4. 創(chuàng)建MySQL命令行的軟連接
類似第3章中進(jìn)入到mysql安裝路徑的bin目錄中執(zhí)行 ./mysql xxxx 來進(jìn)行登錄,我們需要的是在任意目錄下都可以通過mysql命令進(jìn)行登錄,有兩種解決辦法:
1. 在 /usr/bin 目錄下創(chuàng)建 /u01/mysql/mysql-8.0.33/bin/mysql 的軟連接
[root@localhost ~]# ln -s /u01/mysql/mysql-8.0.33/bin/mysql /usr/bin/mysql
2. 將 mysql8.0.33的bin目錄加入到PATH當(dāng)中
[root@localhost ~]# export PATH=$PATH:/u01/mysql/mysql-8.0.33/bin/
我個(gè)人是將5.7和8.0下的mysql分別創(chuàng)建了軟連接,因?yàn)槲乙策€沒搞清楚,通過8.0的客戶端指令登錄5.7的服務(wù)能不能兼容,反正指定了socket也能正常登錄,但總覺得還是會(huì)有點(diǎn)區(qū)別,反正方法都在上面,大家自行甄別。
另:將bin加入到PATH還有個(gè)好處就是其他命令,比如mysqldump啥的也能用,就是需要指定不同的socket
創(chuàng)建完成后即可在任意目錄下通過指定不同的socket,進(jìn)入不同版本的mysql
[root@localhost ~]# mysql -u root -p -S /tmp/mysql80.sock ## 或者 [root@localhost ~]# mysql -u root -p -S /tmp/mysql57.sock
當(dāng)然,不想每次都輸入socket也是可以偷懶的,哈哈哈哈哈哈哈哈哈哈哈,方法就是通過alias別名的方式默認(rèn)加上socket,方法如下:
針對所有用戶,可編輯 /etc/bashrc 文件,只針對root用戶,可編輯 /root/.bashrc,針對其他個(gè)別用戶,可編輯 /home/[用戶名]/.bashrc
[root@localhost ~]# vim .bashrc ### 添加 alias mysql80='mysql -S /tmp/mysql80.sock' alias mysql57='mysql -S /tmp/mysql57.sock' ### Esc + wq! 保存退出 [root@localhost ~]# source .bashrc
至此,就可直接通過 mysql80 -u root -p 命令登錄mysql 8.0服務(wù),通過 mysql57 -u root -p 命令登錄mysql 5.7服務(wù)
當(dāng)然還有一些其他的可增加易用的方法,比如將服務(wù)添加到systemctl,或者通過mysqld_multi來管理多個(gè)服務(wù),后續(xù)有時(shí)間再研究吧。
以上就是在同一Linux下安裝兩個(gè)版本的MySQL的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于Linux安裝兩個(gè)版本MySQL的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Winserver2012下mysql 5.7解壓版(zip)配置安裝教程詳解
這篇文章主要介紹了Winserver2012下mysql 5.7解壓版(zip)配置安裝教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01關(guān)于MySQL與Golan分布式事務(wù)經(jīng)典的七種解決方案
本文介紹了分布式事務(wù)的一些基礎(chǔ)理論,并對常用的分布式事務(wù)方案進(jìn)行了講解;在文章的后半部分還給出了事務(wù)異常的原因、分類以及優(yōu)雅的解決方案;最后以一個(gè)可運(yùn)行的分布式事務(wù)例子,將前面介紹的內(nèi)容以簡短的程序進(jìn)行演示,需要的朋友可以參考一下文章具體內(nèi)容2021-10-10MySql數(shù)據(jù)庫基礎(chǔ)知識(shí)點(diǎn)總結(jié)
這篇文章主要介紹了MySql數(shù)據(jù)庫基礎(chǔ)知識(shí)點(diǎn),總結(jié)整理了mysql數(shù)據(jù)庫基本創(chuàng)建、查看、選擇、刪除以及數(shù)據(jù)類型相關(guān)操作技巧,需要的朋友可以參考下2020-06-06mysql insert的幾點(diǎn)操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )
DELAYED 做為快速插入,并不是很關(guān)心失效性,提高插入性能。2010-04-04