CentOS7下源碼編譯安裝MySQL5.6.4
寫這篇博客的主要原因是:請看上一篇博客:CentOS7下更改MySQL5.6.4默認的數據存儲位置。對,當初通過rpm安裝的mysql5.6.4,一切都源於想修改默認的數據存儲位置。在那個上面差點沒修改成功,就想着通過源碼編譯安裝試試,因爲源碼編譯安裝可以在編譯前指定路徑,因此就有了這篇博客。雖然最終也在(通過rpm安裝的mysql5.6.4)上修改成功了,具體的修改方法,請看上篇博客:CentOS7下更改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
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
6.4 拷貝服務腳本到init.d目錄:
cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
6.5 然後啓動mysql: service mysql start,不幸的事情發生了,如下圖:
我們一步步來解決,根據提示,應該是 /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 啓動,悲劇再次發生:
同樣根據提示,手動建立文件:
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
這下總算可以了吧,我們 service mysql start 啓動,尼瑪,還是起不起立:
去查看下日誌: cat /var/log/mariadb/mariadb.log
去百度了一波,解決方案是,把 /etc/my.cnf中datadir的路徑改爲/home/mysql/data (我們自己設置的目錄)。然後 service mysql start,perfect,一切正常:
確認一波,到底啓動成功沒:
ps -ef | grep mysql
netstat -an | grep 3306
接下來設置環境變量,方便在終端中進入數據庫:
打開/etc/profile 加入 exprot PATH =$PATH:/home/mysql/bin
然後輸入mysql進入到數據庫,自己可以設置用戶名密碼什麼的,接下來一系列操作,只是爲了確認數據路徑到底是否在我們想要的目錄下:
以上就是整個源碼編譯安裝的全過程,這幾天被mysql這個問題搞得有點慘,特此記錄下。