CentOS7下源碼編譯安裝MySQL5.6.4

CentOS7下源碼編譯安裝MySQL5.6.4

寫這篇博客的主要原因是:請看上一篇博客:CentOS7下更改MySQL5.6.4默認的數據存儲位置。對,當初通過rpm安裝的mysql5.6.4,一切都源於想修改默認的數據存儲位置。在那個上面差點沒修改成功,就想着通過源碼編譯安裝試試,因爲源碼編譯安裝可以在編譯前指定路徑,因此就有了這篇博客。雖然最終也在(通過rpm安裝的mysql5.6.4)上修改成功了,具體的修改方法,請看上篇博客:CentOS7下更改MySQL5.6.4默認的數據存儲位置。但是還是想把通過源碼編譯安裝的過程記錄下來,一來方便自己日後用到查看,二來方便其他有需要的同學查看,可以避免在這個上面浪費過多時間。

一、去官網下載源碼:MySQL5.6.4源碼官方地址
MySQL5.6.4官方地址

二、通過命令 tar xvf mysql-5.6.40.tar.gz 解壓。
三、要源碼編譯的話,先安裝gcc,命令爲:

yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio
yum install libaio libaio-devel -y
yum install perl-Data-Dumper -y

四、安裝完gcc後,進入到解壓後的MySQL源碼目錄,我的是: cd /home/hc/下載/mysql-5.6.40 然後執行命令:

個人體會:關於這兩個目錄,建議不要放在/home/username/下(username代指你的用戶名),因爲經過我的測試這會爲後面的配置帶來巨大的權限問題,我甚至不得不把整個/home的權限全部給mysql,才能啓動成功,否則就提示沒有權限生成讀寫/home/username/mysql/……下的某個文件。

cmake -DCMAKE_INSTALL_PREFIX=/home/mysql -DMYSQL_DATADIR=/home/mysql/data -DSYSCONFDIR=/etc 
-DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 
-DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 
-DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all 
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

note:‘-’是有的,別忘記加了,‘-’前要有空格。

-DCMAKE_INSTALL_PREFIX 是源碼編譯後生成的文件放置的目錄
-DMYSQL_DATADIR就是我們以後MySQL數據想放置的目錄

五、編譯完然後安裝:

make && make install

靜靜的等待….等到MySQL安裝完成。
六、進行一些配置,這也是坑最多的環節….
6.1 先新建一個mysql組,並在mysql組裏建一個mysql用戶:

groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

可以通過下面的命令來查看新建用戶有沒有成功。

cat /etc/group | grep mysql
cat /etc/passwd | grep mysql

查看mysql用戶是否存在

6.2 賦予權限,因爲我們編譯生成後的文件所在位置是/home/mysql,所以,通過如下命令把/home/mysql的權限賦給mysql:

chown -R mysql:mysql /home/mysql

查看一下:
目錄權限

6.3 進入mysql目錄下,對mysql數據庫進行初始化:

./scripts/mysql_install_db --basedir=/home/mysql --datadir=/home/mysql/data --user=mysql

mysql初始化

6.4 拷貝服務腳本到init.d目錄:

cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on

6.5 然後啓動mysql: service mysql start,不幸的事情發生了,如下圖:
mysql啓動錯誤

我們一步步來解決,根據提示,應該是 /var/log/mariadb/mariadb.log 這個文件不存在,那好,我們手動建一個並賦予權限:

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/

然後 service mysql start 啓動,悲劇再次發生:
mysql啓動錯誤2

同樣根據提示,手動建立文件:

mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

這下總算可以了吧,我們 service mysql start 啓動,尼瑪,還是起不起立:
mysql啓動錯誤3

去查看下日誌: cat /var/log/mariadb/mariadb.log
mysql日誌

去百度了一波,解決方案是,把 /etc/my.cnf中datadir的路徑改爲/home/mysql/data (我們自己設置的目錄)。然後 service mysql start,perfect,一切正常:
mysql啓動成功

確認一波,到底啓動成功沒:

ps -ef | grep mysql
netstat -an | grep 3306

確認mysql啓動成功沒

接下來設置環境變量,方便在終端中進入數據庫:

打開/etc/profile 加入 exprot PATH =$PATH:/home/mysql/bin

然後輸入mysql進入到數據庫,自己可以設置用戶名密碼什麼的,接下來一系列操作,只是爲了確認數據路徑到底是否在我們想要的目錄下:
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

以上就是整個源碼編譯安裝的全過程,這幾天被mysql這個問題搞得有點慘,特此記錄下。



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