目錄
綜述:
最近在linux系統搭建MySQL數據庫,需要搭建5.7的版本,過程中也踩了不少坑,把安裝的過程做個分享,希望大家少踩坑。
本次安裝是安裝的msyql5.7.12 的版本,採用的是源碼編譯安裝的方式
切記:內存至少要大於2G
取包鏈接 要把裏面的包需要全部取下來
提取碼:jz0l
安裝依賴包
首先要安裝依賴包,這些依賴包用來安裝我們等會需要安裝的工具
yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio libaio-devel perl-Data-Dumper net-tools
安裝過程
1.檢查m4是否安裝
有些環境這個m4的包是沒有安裝的,需要先檢查一下,如果沒有安裝則需要先安裝m4包
rpm -qa |grep m4
沒有結果則表示沒有安裝
tar -xvf m4-1.4.18.tar.gz
chown -R root:root m4-1.4.18 ## -->如果解壓之後權限不是root,則需要執行
cd m4-1.4.18
./configure --prefix=/usr/local/m4-1.4.18 ##-->指定安裝路徑爲:/usr/local/m4-1.4.18
make && make install
vim /etc/profile
#在最後一行加上:
export PATH=/usr/local/m4-1.4.18/bin:$PATH
source /etc/profile
2.安裝gmp
tar xvf gmp-4.3.2.tar.bz2
cd gmp-4.3.2/ #-->如果解壓之後權限不是root,則需要執行
chown -R root:root gmp-4.3.2/
./configure --prefix=/usr/local/gmp-4.3.2 -->指定安裝路徑
make && make install
3.安裝mpfr
tar zxvf mpfr-2.4.2.tar.gz
chown -R root:root ./ 如果解壓之後權限不是root,則需要執行
cd mpfr-2.4.2/
./configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2 ##-->指定安裝路徑和gmp路徑
make && make install
4.安裝mpc
tar zxvf mpc-0.8.1.tar.gz
chown -R root:root ./ 如果解壓之後權限不是root,則需要執行
cd mpc-0.8.1/
./configure --prefix=/usr/local/mpc-0.8.1 --with-mpfr=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2 -指定安裝路徑,mpfr和gmp路徑
make && make install
ln -s /usr/local/mpc-0.8.1/lib/libmpc.so.2 /usr/lib/libmpc.so.2
ln -s /usr/local/mpc-0.8.1/lib/libmpc.so.2 /usr/lib64/libmpc.so.2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib
5.安裝gcc
需要高版本的gcc,本次安裝的是4.8.0版本的
tar zxvf gcc-4.8.0.tar.gz
chown -R root:root ./ -->如果解壓之後權限不是root,則需要執行
cd gcc-4.8.0
./configure --prefix=/usr/local/gcc-4.8.0 -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
make && make install
##rm -f gcc g++ cc c++ -->此步驟執行後沒刪除文件且報錯,可忽略
/usr/local/gcc-4.8.0/bin/x86_64-unknown-linux-gnu-c++ c++ -->此步驟也可忽略
在/etc/prfile文件末尾追加
export PATH=/usr/local/gcc-4.8.0/bin:$PATH
source /etc/profile
是新版本的gcc生效
6.安裝cmake
tar zxvf cmake-3.7.2.tar.gz
chown -R root:root ./ #-->如果解壓之後權限不是root,則需要執行
cd cmake-3.7.2
./bootstrap
gmake
gmake install
7.安裝boost_1_59
安裝MySQL5.7.12要求boost_1_59_0版本
tar xvf boost_1_59_0.tar.gz
chown -R root:root ./ #-->如果解壓之後權限不是root,則需要執行
cd boost_1_59_0
./bootstrap.sh --with-libraries=system,filesystem,log,thread --with-toolset=gcc
./b2 toolset=gcc cxxflags="-std=c++11"
./b2 install
注意:
默認安裝在/usr/local/lib目錄下;頭文件在/usr/local/include/boost目錄下;install後面可以加參數 --prefix=/usr 來設置安裝路徑
如果安裝msyql時提示boost版本不對應則卸載boost安裝對應版本boost
boost卸載方法:
1.顯示已經安裝文件
rpm -qa | grep boost
2.使用一下命令依次卸載
rpm -e --nodeps xxxx
8.安裝mysql
tar xvf mysql-boost-5.7.12.tar.gz
chown -R root:root ./ #-->如果解壓之後權限不是root,則需要執行
cd mysql-5.7.12
cmake \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/app/mysql/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=/app/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 \
-DWITH_BOOST=boost/boost_1_59_0
make && make install
#如果要重新安裝需要清理make,刪除CMakeCache.txt文件
make clean
rm CMakeCache.txt
#然後可以重新 cmake
解釋:
-DCMAKE_INSTALL_PREFIX=/app/mysql \ mysql安裝目錄
-DMYSQL_DATADIR=/app//mysql /mysql_data \ >mysql數據文件目錄
-DMYSQL_UNIX_ADDR=/app/mysql /mysql.sock 設置監聽套接字路徑,這必須是一個絕對路徑名。默認爲/tmp/mysql.sock
-DDEFAULT_CHARSET=charset_name 設置服務器的字符集。
缺省情況下,MySQL使用latin1的(CP1252西歐)字符集。cmake/character_sets.cmake文件包含允許的字符集名稱列表。
-DDEFAULT_COLLATION=collation_name 設置服務器的排序規則。
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 存儲引擎選項:
MyISAM,MERGE,MEMORY,和CSV引擎是默認編譯到服務器中,並不需要明確地安裝。
靜態編譯一個存儲引擎到服務器,使用-DWITH_engine_STORAGE_ENGINE= 1
可用的存儲引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)
-DMYSQL_TCP_PORT=port_num 設置mysql服務器監聽端口,默認爲3306
-DENABLE_DOWNLOADS=bool 是否要下載可選的文件。例如,啓用此選項(設置爲1),cmake將下載谷歌所使用的測試套件運行單元測試。
9.初始化mysql
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /app/mysql
cp /app/mysql/support-files/mysql.server /etc/init.d/mysql
cp /app/mysql/support-files/my-default.cnf /etc/my.cnf
chmod -R 755 /etc/init.d/mysql
bin/mysql_install_db --basedir=/app/mysql --datadir=/app/mysql/mysql_data --user=mysql
#設置開機自啓
chkconfig --add mysql
chkconfig --level 345 mysql on
#添加環境變量 /etc/profile最後一行
vi /etc/profile
#在最後一行後面添加
export PATH=/app/mysql/bin:$PATH
source /etc/profile
vim /etc/my.cnf 文件
#我的my.cnf文件如下;
[mysqld]
basedir = /app/mysql
datadir = /app/mysql/mysql_data
port = 3306
server_id = 1
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
default-character-set=utf8
在啓動MySQL服務時,會按照一定次序搜索my.cnf,先在/etc目錄下找,找不到則會搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,這是新版MySQL的配置文件的默認位置!在CentOS 6.4版操作系統的最小安裝完成後,在/etc目錄下會存在一個my.cnf,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啓動。
解決方案一:改名
mv /etc/my.cnf /etc/my.cnf.bak
以後在使用"yum update"更新系統後,需要檢ls查下/etc目錄下是否會多出一個my.cnf,如果多出,將它重命名成別的。否則,MySQL將使用這個配置文件啓動,可能造成無法正常啓動等問題。
解決方案二:直接用mysql默認配置覆蓋徹底解決(推薦)
cp /app/mysql /support-files/my-default.cnf /etc/my.cnf
mysql的啓停/登錄
#啓動mysql服務
service mysqld start
#重啓mysql服務
service mysqld restart
#停止mysql服務
service mysqld stop
隨機密碼存放在/root/.mysql_secret
mysql -uroot -p
輸入隨機密碼
進入mysql後要修改密碼,不然無法使用
mysql> alter user 'root'@'localhost' identified by 'root';
mysql> exit;
然後可以操作數據庫啦
mysql -uroot -p
#輸入新密碼root
mysql>show databases;
mysql>use mysql;
mysql>show tables;
mysql>quit;
問題解決
如果遇到:
Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/***.com.pid).
就在
/usr/local/mysql/data/
目錄下新建一個空文件
***.com.pid
如果遇到:
[ERROR] unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'問題
vi /etc/my.cnf
這一樣註釋掉#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
如果遇到:
sql/CMakeFiles/sql.dir/itme_geofuncc.cc.o
可能是內存不夠引起的,增大內存,重新進行cmake