Centos7.6編譯安裝數據庫5.7.27(華為鯤鵬雲服務器)
1、數據庫下載相關安裝包
https://downloads.mysql.com/archives/community/
Mysql5.7.22版本有很多的變化,安裝時需要安裝BOOST庫,同安裝包一起下載即可。
2、創建安裝時需要的目錄
mkdir -p /www/server/mysql/{data,logs,tmp,run}
3、安裝所需依賴
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
查看是否存在mariadb數據庫,存在就卸載
4、升級gcc c++不然在華為鯤鵬雲會報錯(不是華為鯤鵬服務器不用做第4步操作)
rpm -qa | grep gcc ##查詢gcc版本
rpm --nodeps -e gcc-c++-4.8.5-39.el7.aarch64 gcc-4.8.5-39.el7.aarch64 ##卸載
yum install centos-release-scl
yum install devtoolset-7 ##devtoolset-7對應gcc7.x.x版本
scl enable devtoolset-7 bash ##激活gcc
gcc --version ##查看版本
4、下載高版本cmake
wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
tar xvf cmake-3.6.2.tar.gz && cd cmake-3.6.2/ ##解壓
./bootstrap ##執行安裝
gmake ##編譯
gmake install
/usr/local/bin/cmake --version ##查看版本
yum remove cmake -y ##卸載舊的版本
5、 創建用戶及授權目錄
groupadd mysql
useradd -g mysql -s /sbin/nologin -M mysql
創建目錄用於存放boots
mkdir -p /www/server/mysql-boost
授權目錄
chown mysql:mysql -R /www/server/
chmod 777 -R /www/server/
7、解壓Mysql及mysql-boots
tar -zxvf mysql-5.7.27.tar.gz
tar -zxvf mysql-boost-5.7.27.tar.gz
解壓后mysql-boots后會自動的存在mysql-5.7.22目錄
boots下載:https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
解壓tar-zxvf boost_1_59_0.tar.gz
移動到指定的目錄,在第8步的-DWITH_BOOST= 需要指定該目錄
8、編譯安裝(根據自己目錄決定)
cmake . \
-DCMAKE_INSTALL_PREFIX=/www/server/mysql/ \
-DMYSQL_DATADIR=/www/server/mysql/data \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/www/server/mysql-boost/boost \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/www/server/mysql/run/mysql.sock \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EMBEDDED_SERVER=1
編譯安裝
make -j 96(-j 96 參數充分利用多核CPU優勢,加快編譯速度)
####之前我們一直使用make但是make編譯太慢
如果不是華為的鯤鵬雲服務器沒有報錯執行完畢后執行 make install 即可
華為鯤鵬雲編譯出現報錯
解決該問題error: ‘prctl’ was not declared in this scope
cp /usr/include/sys/prctl.h /root/mysql-5.7.27/include/
vim mysql-5.7.27/sql/mysqld.cc
保存退出繼續執行 make -j 96
沒有報錯后,並執行100%就執行 make install
9、初始化數據庫並配置my.cnf
cd /www/server/mysql ###切換至安裝目錄
bin/mysqld --initialize ###初始化數據庫
vim /etc/my.cnf ###配置my.cnf
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#設置3306端口
port = 3306
user = mysql
# 設置mysql的安裝目錄
basedir=/www/server/mysql
#mysql數據文件所在位置
datadir=/www/server/mysql/data/
#臨時目錄 比如load data infile會用到
tmpdir=/www/server/mysql/tmp/
##設置socke文件所在目錄
socket=/www/server/mysql/run/mysql.sock
#記錄當前 mysqld 進程的 pid
pid-file=/www/server/mysql/run/mysql.pid
#錯誤日志文件
log_error=/www/server/mysql/logs/error.log
#TIMESTAMP如果沒有顯示聲明NOT NULL,允許NULL值
explicit_defaults_for_timestamp = true
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
#授權表中使用主機名了,只能使用IP
skip-name-resolve
#skip-grant-tables
#max_allowed_packet=12800074000
#時區
default-time_zone = '+8:00'
10、配置環境變量及設置開機自啟動
echo 'export PATH=/www/server/mysql/bin:$PATH' >>/etc/profile ##設置變量
source /etc/profile ###讓變量生效
將啟動文件拷貝至/etc/init.d/方便啟動
cp /www/server/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld ###給mysql執行權限
cd /www/server/mysql/bin ###切換至bin目錄
ln -s mysql /usr/sbin/mysql ###創建軟連接方便使用mysql直接登陸
chkconfig mysqld on ####設置開機自啟動
chkconfig --list mysqld ####查看是3-5是否開啟
11、啟動數據庫
/etc/init.d/mysqld start
那就來解決報錯,找不到error.log並沒權限。
cd /www/server/mysql/logs ##切換至你安裝mysql時定義的日志目錄
touch error.log ###創建日志
chmod 777 -R /www/server/
chown mysql:mysql -R /www/server/ ###重新在設置一下權限
再次啟動數據庫。
/etc/init.d/mysqld start ###啟動完成
登陸數據庫