基于阿里云服务器Centos7.2的Linux系统编译

若有数据库,建议先卸载。Centos7.2可能会有mariadb

rpm -qa | grep Maria*

yum -y remove mari*       —如果有,则卸载

rm -rf /var/lib/mysql/*

安装依赖包

yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison

官网下载mysql源码包

wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.19.tar.gz

tar xf mysql-5.7.19.tar.gz

下载boost

wget http://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.zip

unzip boost_1_59_0.zip

cmake是阿里云的YUM源里有(当然,如果感兴趣也可以自行去编译,这里用的是YUM源)

# rpm -qa cmake
cmake-2.8.12.2-2.el7.x86_64

cd mysql-5.7.19/

添加一个mysql用户

useradd mysql

cmake要编辑的东西比较多,可以写成一个脚本,然后运行脚本即可

vim cmake.sh

#!/bin/bash

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \    —安装路径
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/xx/mysql/data \    —数据根目录(xx为自己需要放置那个目录,自行创建/xx/mysql/data)
-DSYSCONFDIR=/xx/mysql/etc \     —my.cnf文件的路径(自行创建/xx/mysql/etc)
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/xx/mysql/mysql.sock \     —sock文件的路径
-DWITH_BOOST=/xx/boost_1_59_0 \     —boost的路径
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql

chmod +x cmake.sh    —添加执行权限

bash cmake.sh

make;make install

编译(make)过程中可能会报错,本人的阿里云服务器就1G,1核···报了个内存不足

解决:

dd if=/dev/zero of=/swapfile bs=1k count=2048000

mkswap /swapfile

swapon /swapfile

echo “/swapfile swap swap defaults 0 0”  >> /etc/fstab

mount -a

编译完成后,手动编写my.cnf配置文件

vim /xx/mysql/etc/my.cnf

[mysqld]
port=3306
basedir=/usr/local/mysql
datadir=/xx/mysql/data
pid-file=/xx/mysql/data/mysql.pid
socket=/xx/mysql/mysql.sock
log-error=/xx/mysql/data/mysql-err.log
user=mysql

[client]
socket=/xx/mysql/mysql.sock

授予mysql目录权限

chown mysql.mysql /xx/mysql/ -R

chown mysql.mysql /usr/local/mysql/ -R

拷贝一些启动脚本

cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

cp -a /usr/local/mysql/bin/mysql /usr/local/bin/mysql

初始化数据库

/usr/local/mysql/bin/mysqld –initialize –user=mysql –basedir=/usr/local/mysql/ –datadir=/xx/mysql/data/

记录初始化生成的默认密码,没记录下来也没关系,跳过授权表即可

在/xx/mysql/etc/my.cnf配置文件里面的[mysqld]下面添加一句skip-grant-tables

启动服务

service mysql start          —前面拷贝了启动脚本(start|stop|restart|reload)

 

chkconfig –add mysql

chkconfig mysql on     —设置开机自启动

为了方便操作,在/etc/profile下加一个环境变量

export PATH=/usr/local/mysql/bin:$PATH

source  /etc/profile   —-重新读取一下配置文件

因为前面已经跳过了授权表,所以不用密码即可进入

mysql

mysql> update mysql.user set authentication_string=password(‘new-password’) where user=’root’;

mysql> flush privileges ;

mysql>exit

去掉/xx/mysql/etc/my.cnf里面的skip-grant-tables然后重启服务

service mysql restart

然后登录MySQL

mysql -u root -pnew-password

修改密码,因为前面跳过授权表修改的是默认密码,会报默认密码修改,再次修改即可

mysql>set password=password(‘new-password’)

mysql>flush privileges;

show databases;可以看到显示即为成功

成功编译MYSQL5.7.19!

发表评论

电子邮件地址不会被公开。 必填项已用*标注