MySQL的編譯安裝-詳細(5.7.29)

2020-08-13 13:55:03

MySQL的編譯安裝

記錄本人在阿裡雲伺服器上編譯安裝MySQL5.7.29的全過程(2020/8/13 12:00)
安裝的方式都差不多,可以按自己的需要下載其他版本
直接上步驟,看官按需修改即可:

1、下載MySQL原始碼包並上傳至linux

這一步很簡單,就是去MySQL的官網下載MySQL社羣版5.7.29的原始碼包
地址:https://downloads.mysql.com/archives/community/
上傳Linux可以使用Xftp或者Linux的lrzsz命令中的rz命令

2、解壓原始碼包和安裝解決MySQL軟體依賴關係的包

解壓原始碼包:

rpm  -ivh    mysql-community-5.7.29-1.el7.src.rpm

安裝解決MySQL軟體依賴關係的包:

yum  install cmake ncurses-devel gcc  gcc-c++ bzip2 openssl-devel -y

3、新建使用者mysql及新建數據目錄資料夾,並修改數據目錄的擁有者爲mysql

新建使用者:

useradd -r -s /sbin/nologin mysql

新建資料夾:

mkdir -p /data/mysql

修改數據目錄的擁有者爲mysql:

chown  mysql:mysql /data/mysql  

4、進入原始碼包位置並解壓原始碼包,並將boost包移動到mysql解壓的包裡

進入目錄:

cd /root/rpmbuild/SOURCES

解壓原始碼包並移動:

tar xf mysql-5.7.29.tar.gz
tar xf boost_1_59_0.tar.bz2
mv boost_1_59_0  mysql-5.7.29

5、進入mysql-5.7.29並進行編譯前的設定

進入目錄:

cd mysql-5.7.29

編譯前的設定:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0

參數講解:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/sc_mysql 指定MySQL的安裝路徑
  • -DMYSQL_DATADIR=/data/mysql 指定MySQL的存放目錄
  • -DSYSCONFDIR=/etc 指定MySQL組態檔的存放位置
  • -DMYSQL_USER=mysql 指定使用者名稱
  • -DDEFAULT_CHARSET=utf8_general_ci 指定預設的字元集爲utf-8
  • -DWITH_BOOST=boost_1_59_0 指定boost源

6、編譯安裝

啓動2個進程去編譯,加快速度:

make -j  2

這裏的數位2爲進程,根據cpu核數自行修改
安裝編譯好的二進制檔案到指定的目錄:

make install 

7、備份原來的my.cnf組態檔,然後清空這個檔案,這個檔案是mariadb的組態檔,不是mysql的

cp /etc/my.cnf /root/mysql.cnf.bak 
>/etc/my.cnf

第一行是備份,第二行是清空

8、進入編譯安裝好的mysql的目錄,並初始化mysql,並且將日誌和臨時密碼重定向到/root/temp_password.txt檔案裡

進入目錄:

cd /usr/local/mysql/bin

初始化:

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>/root/temp_password.txt

9、修改PATH變數並拷貝mysqld的程式檔案到指定的目錄,方便後面設定mysqld服務開機啓動

echo  'PATH=$PATH:/usr/local/mysql/bin' >>/etc/bashrc
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

10、啓動mysql

service  mysqld  start

從儲存的臨時密碼檔案裡,擷取出臨時密碼,賦值給一個變數temp_pwd

temp_pwd=$(cat /root/temp_password.txt |tail -1|awk '{print $11}')

給MySQL設定密碼:

mysql -uroot -p$temp_pwd --connect-expired-password -e 「set password=‘此處填寫密碼’」

進入MySQL:

mysql -uroot -p"此處填寫密碼"

11、修改組態檔my.cnf

my.conf設定
#socket是用來指定socket檔案的路徑,方便用戶端連線找到

[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock