官網下載mysql的原始碼包,上傳到Linux伺服器的當前目錄下(~)
有需要的可百度網路硬碟提取:
鏈接:https://pan.baidu.com/s/1BOFyrnLZl8tl-FRpwNRJjw
提取碼:phff
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
rpm -ivh mysql-community-5.7.29-1.el7.src.rpm
rpm 是linux裡的軟體管理的命令
-ivh 是安裝的意思 --》本質上其實就是解壓這個src.rpm包
如果沒有命令可以 yum install 安裝
弄好之後應該是這樣的
[root@localhost ~]# ls
anaconda-ks.cfg mysql-community-5.7.29-1.el7.src.rpm rpmbuild
[root@localhost ~]# cd rpmbuild
rpmbuild目錄一定會在使用者的家目錄下
[root@localhost rpmbuild]# ls
SOURCES SPECS
[root@localhost rpmbuild]# cd SOURCES
[root@localhost SOURCES]# ls
boost_1_59_0.tar.bz2 filter-requires.sh mysql-5.7.29.tar.gz
filter-provides.sh mysql-5.6.45.tar.gz
tar xf mysql-5.7.29.tar.gz
還要解壓boost包:tar xf boost_1_59_0.tar.bz2 (bzip2)
並且將這個boost包移到mysql解壓的包裡 mv boost_1_59_0 mysql-5.7.29
cd mysql-5.7.29 – 一定要在這個目錄裏面執行接下來的步驟
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sc_mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0
cmake是一個編譯器,就是將C語言編寫的程式碼翻譯成機器可以執行的二進制的程式
gcc 也是一個編譯器
-DCMAKE_INSTALL_PREFIX --》 是編譯安裝Mysql的時候的固定語法參數,是給cmake傳參的,告訴cmake去生成一個叫做Makefile的檔案
-DMYSQL_DATADIR --》 指定Mysql的存放數據的目錄 ,具體的路徑可以自己定義
-DSYSCONFDIR --》 指定MYSQL的組態檔存放的目錄
-DMYSQL_USER --》 指定啓動mysql的使用者,使用者名稱可以自己定義
-DDEFAULT_CHARSET --》 指定MySQL裡的預設的字元集
-DDEFAULT_COLLATION --》 排序規則,utf8_general_ci 是utf8裡的排序規則,不區分大小寫
-DWITH_BOOST --》 指定boost原始碼的位置,在mysql原始碼的當前目錄下有一個boost_1_59_0的資料夾
boost是什麼? — Boost提供免費的經過同行評審的可移植C++源庫
cmake和/.configure – 目的是生成makefile的組態檔
輸入命令:make
make -j 2 啓動2個進程編譯,加快速度,如果系統有兩個核的話。
useradd -r -s /sbin/nologin mysql
mkdir -p /data/mysql
並且修改許可權:chown mysql:mysql /data/mysql/
make install
作用:將編譯好的二進制檔案安裝到指定的目錄 --》 複製當前目錄下編譯好的二進制檔案到當時指定的目錄
cp /etc/my.cnf /root/new_direct/my.cnf
備份原來的/etc/my.cnf檔案,然後清空這個檔案,這個檔案是mariadb的組態檔,不是MySQL的
cd /usr/local/sc_mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/sc_mysql --datadir=/data/mysql &>/root/new_direct/temp_passwd.txt
temp_passwd=$(cat /root/new_direct/temp_passwd.txt |tail -1|awk ‘{print $11}’)
temp_passwd – 獲得臨時密碼
cp mysql /usr/bin/
echo ‘PATH=$PATH:/usr/local/sc_mysql/bin’ >>/etc/bashrc
隨便執行一個都可以,目的是爲了可以直接通過命令啓動mysql
cp …/support-files/mysql.server /etc/init.d/mysqld – 拷貝mysqld的程式檔案到指定的目錄,方便後面設定mysqld服務開機啓動 -》mysqld服務的啓動指令碼
service firewalld stop / systemctl stop firewalld.service
setenforce 0
chkconfig mysqld on
service mysqld start
mysql -uroot -p’xxx’ alter user ‘root’@‘localhost’ identified by ‘你要設定的密碼’;
執行ps aux|grep mysqld命令
如果顯示有mysqld_safe和mysqld兩個進程,那麼恭喜你,mysql啓動成功