下载

这里使用mysql-5.7.20 或者 mysql-boost-5.7.20(包含boost库)
下载链接:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz
tar -zxvf mysql-boost-5.7.20.tar.gz

预编译配置

解决依赖

yum -y install gcc gcc-c++ cmake ncurses ncurses-devel bison

如果上面下载的包含Boost C++库的包就不用单独下载,否则需要单独下载安装boost

新版本的mysql使用了cmake 进行安装,所以没有之前的configure文件了

现在我们就使用cmake 进行安装配置

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

上面几个重要的地方

'-DCMAKE_INSTALL_PREFIX' 是安装目录

'-DMYSQL_DATADIR' 是数据文件存放目录

'-DSYSCONFDIR' 配置文件目录

'-DMYSQL_UNIX_ADDR' SOCK文件存放目录

'-DMYSQL_TCP_PORT' 端口号

更多信息参考官方文档

编译&安装

检查无误后,就开始编译安装了

# -j 参数后是根据CPU线程数并行编译
make -j `grep processor /proc/cpuinfo | wc -l`
#安装
make install

如果是阿里云centos主机1G内存的, 会在make编译到45%时会报错, 这是内存不足所致。

c++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2

那么设置2G交换分区来用下 :

# dd if=/dev/zero of=/swapfile bs=1k count=2048000 --获取要增加的2G的SWAP文件块
# mkswap /swapfile     -- 创建SWAP文件
# swapon /swapfile     -- 激活SWAP文件
# swapon -s            -- 查看SWAP信息是否正确
# echo "/swapfile swap swap defaults 0 0" >> /etc/fstab     -- 添加到fstab文件中让系统引导时自动启动
编译完后, 如果不想要交换分区了, 可以删除:

# swapoff /swapfile
# rm -fr /swapfile

记得如果编译出错重新编译需要先执行

make clean
rm CMakeCache.txt

然后,然后,然后就是半个小时的等待。。。

配置

MySQL运行配置

等一切就绪后,我们需要确保存在 mysql组和mysql用户,没有的话就添加

groupadd mysql
useradd -g mysql mysql

或者

groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql

然后将目录 /usr/local/mysql 的所有者改为mysql

chown -R mysql:mysql /usr/local/mysql
MySQL初始化

这时算是已经安装完成了,但是mysql中是没有数据的(即使系统自带的数据都没有),这时需要执行自带脚本,初始化mysql数据

# mysql_install_db 将在MySQL 5.7.6版本开始被弃用
bin/mysqld --initialize --user=mysql \
         --basedir==/usr/local/mysql \
         --datadir==/usr/local/mysql/data \

上述的选项可以统一写在etc/my.cnf配置文件里

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

然后如下调用mysqld(--defaults-file 参数指定配置文件,首先用该选项在一行中输入命令):

shell> bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf
         --initialize --user=mysql

执行完成后,你会发现/usr/local/mysql/data 目录下多了一些文件,这些就是mysql的数据文件了

更多信息参考官方文档

MySQL配置文件
MySQL启动服务

设置启动脚本,开机自启动

ls -lrt /usr/local/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl enable mysqld
    mysqld.service is not a native service, redirecting to /sbin/chkconfig.
    Executing /sbin/chkconfig mysqld on

注意:bin/mysql是客户端连接程序,bin/mysqld_safe是服务器文件,服务端启动脚本是support-files/mysql.server

即:

/usr/local/mysql/bin/mysqld_safe --user=mysql &
#等价于下面,实际上上条命令就写在下条命令的脚本里,参数更加齐全
/usr/local/mysql/support-files/mysql.server start

将脚本复制到/etc/init.d目录使其成为系统服务,可以使用systemctl风格来启动和停止系统服务

cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

安装脚本之后,启动系统启动所需的命令取决于您的操作系统。在Linux上,您可以使用chkconfig:

chkconfig --add mysql

在一些Linux系统上,下面的命令对于完全启用mysql 脚本似乎也是必需的:

chkconfig --level 345 mysql on

关于mysqld_safe更多信息请点击这里

然后,测试下

/usr/local/mysql/bin/mysql -u root

show databases;

好了,到这里mysql 算是安装成功了!

参考资料

标签: none

添加新评论