Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)
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 ###启动完成
登陆数据库