python

CentOS安裝低版本MySQL方法


前言

安裝高版本MySQL還是很簡單的,尤其是最新版,一把梭就搞定。但安裝低版本就有點麻煩了,今天記錄一下安裝低版本MySQL方法。

安裝方式:編譯安裝

參考文獻:https://blog.csdn.net/weixin_33936401/article/details/93395780
主體流程是按他這個,但他這個有諸多問題沒提到,於是踩了很多坑後,我打算重新寫一下。

安裝MySQL5.7版本:https://www.cnblogs.com/os4top16/p/12256733.html?utm_source=tuicool

安裝

選擇安裝包及下載

cd /tmp            //我將安裝包放在/tmp目錄下
wget http://dev..com/get/Downloads/-5.1/-5.1.48.tar.gz

MySQL有哪些版本:https://downloads.mysql.com/archives/community/

另外,需要注意的是mysql-connector-,這個東西是連線MySQL資料庫的驅動,非常常用。並不是所有版本官方都發布驅動的,所以選擇資料庫版本的時候,儘量考慮有驅動的資料庫版本。

哪些資料庫版本有驅動:https://downloads.mysql.com/archives/c-j/
比如5.1系的版本中,有5.1.0 - 5.1.73等74個版本,但5.1.49以及之後都是沒有資料庫驅動的。

對於5.1.73資料庫使用5.1.48驅動,能否可用還不知道,也請知道答案的讀者留言評論,謝謝!

新增使用者和組

groupadd mysql
useradd -g mysql mysql

解壓安裝包

tar -zxvf mysql-5.1.48.tar.gz
cd mysql-5.1.48

安裝依賴

yum install ncurses ncurses-devel

不安裝後面會報錯哦!

編譯及安裝:

//--prefix=/usr/local/mysql引數很重要,必須要加,否則不知道安裝到啥地方去了
//其他引數不加暫未發現有明顯的坑
./configure  '--prefix=/usr/local/mysql' '--with-charset=utf8' '--with-plugins=innobase'

//安裝目錄:/usr/local/mysql
make
make install

在執行以上步驟時,老版本會報do_abi_check錯誤,經查閱資料是老版本的bug。

解決方案:

編輯:/tmp/mysql-5.1.48/Makefile檔案,在該檔案的最底下,將do_abi_check下的程式碼註釋掉,如:
在這裡插入圖片描述
在這裡加一個#號就可以。不用很折騰。

參考文獻:https://blog.csdn.net/xinguan1267/article/details/7362332/
他這個沒有寫修改哪個檔案,害得哥找了大半天。

然後現在MySQL就安裝到/usr/local/mysql路徑下了

配置

依次執行:

cp support-files/my-medium.cnf /etc/my.cnf
cp -r support-files/mysql.server /etc/init.d/mysqld 
/sbin/chkconfig --del mysqld
/sbin/chkconfig --add mysqld
/sbin/chkconfig mysqld on

修改/etc/my.cnf檔案:

以下配置項是必須要有的,預設的my.cnf檔案大多沒有,沒有請新增!有請修改!其他預設配置不變

[client]
port            = 3306
socket          = /var/lib/mysql/mysql.sock

[mysqld]
port            = 3306
datadir         = /var/lib/mysql
socket          = /var/lib/mysql/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

配置許可權表

chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/bin/mysql_install_db --user=mysql

啟動MySQL

chmod a+wrx /etc/init.d/mysql
/etc/init.d/mysqld start

啟動時可能會報錯:Starting MySQL.Manager of pid-file quit without updating file.[FAILED]

解決方案:

1、把上一步的配置許可權表再執行一遍,即可解決問題。

2、刪除系統中所有的mysql-bin.index檔案

//查詢系統中所有的mysql-bin.index檔案
find / -name mysql-bin.index

參考文獻:
https://blog.csdn.net/orichisonic/article/details/47293027
https://www.jb51.net/article/22052.htm

MySQL初始化配置

依次執行:

export PATH=/usr/local/mysql/bin:$PATH
/usr/local/mysql/bin/mysql_secure_installation

會提示要求輸入密碼,在輸入密碼後如果報錯/var/run/mysqld/mysqld.sock或者/tmp/mysqld.sock,總之就是mysqld.sock的錯。

經查閱資料,mysqld.sock是一個臨時檔案,只有MySQL啟動後才有,所以搜尋是搜尋不到的。

解決方案:

建立軟連線即可

//注意目錄,如果改目錄安裝了,就按自定義的目錄
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

如果問題還存在,可以不用理,因為可能是無法設定密碼的原因,那就按空密碼處理。

登入MySQL

執行:

mysql -u root -p

如果上一步的問題還沒解決,那就不輸入密碼,直接回車。

如果成功進入到MySQL了,恭喜你,MySQL安裝成功!

修改MySQL登入密碼

進入MySQL後執行如下語句:

use mysql;
//此處將密碼修改為admin
update user set password=password('admin') where user = 'root';
flush privileges;

退出mysql重新登入,驗證密碼修改是否生效。

參考文獻:
https://www.cnblogs.com/wodexk/p/10674636.html

Navicat連線MySQL

連線步驟沒啥可說的,要說的是Navicat初次連線MySQL可能會報錯。

解決方案:

1、關閉CentOS防火牆

// 檢視防火牆狀態
systemctl status firewalld.service

// 暫停防火牆
systemctl stop firewalld.service

//永久關閉防火牆
systemctl disable firewalld.service

參考文獻:https://blog.csdn.net/shawCloud/article/details/90240712

如果還是連線不上,可能是MySQL不讓連線,

2、開啟MySQL連線
執行:

use mysql;
select Host, User,Password from user;
update user set Host='%' where User='root';
flush privileges;

注意:
host的值必須是百分號,不能是具體IP,否則還是連不上

之後就能用Navicat連線上MySQL了!

參考文獻:https://www.cnblogs.com/youqc/p/10476605.html

本文章已修改原文用詞符合繁體字使用者習慣使其容易閱讀

版權宣告:此處為CSDN博主「隨 亦」的原創文章,依據CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。

原文連結:https://blog.csdn.net/wutianxu123/article/details/107425025