Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

Centos7.6编译安装数据库5.7.22(华为鲲鹏云服务器)

1、数据库下载相关安装包

   https://downloads.mysql.com/archives/community/

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

 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数据库,存在就卸载

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

 4、升级gcc c++不然在华为鲲鹏云会报错(不是华为鲲鹏服务器不用做第4步操作)

rpm -qa | grep gcc  ##查询gcc版本

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

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目录

 Centos7.6编译安装数据库mysql5.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

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

 移动到指定的目录,在第8步的-DWITH_BOOST= 需要指定该目录

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

 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编译太

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

如果不是华为的鲲鹏云服务器没有报错执行完毕后执行  make   install 即可

 华为鲲鹏云编译出现报错

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

解决该问题error: prctlwas 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 

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

保存退出继续执行 make -j 96

没有报错后,并执行100%就执行  make   install

 Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

9、初始化数据库并配置my.cnf

 cd  /www/server/mysql   ###切换至安装目录   

 bin/mysqld --initialize    ###初始化数据库

 Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

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

 Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

 那就来解决报错,找不到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      ###启动完成

 Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)

登陆数据库

Centos7.6编译安装数据库mysql5.7.22(华为鲲鹏云服务器案例)