基于阿里云服务器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!