利用cmake编译,而利用传统方法,cmake的重要特性之一是其独立于源码(out-of-source)的编译功能, 即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译 编译选项
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
1安装依赖包
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
2.创建用户和数据目录
useradd -r -s /sbin/nologin -d /data/mysql/ mysql
id mysql
3.下载源码包并解压缩源码包
(1)tar xvf mariadb-10.2.29.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# ll
total 4
drwxrwxr-x 33 1001 1001 4096 Nov 6 19:18 mariadb-10.2.29
[root@localhost src]# du -sh mariadb-10.2.29/
512M mariadb-10.2.29/4
(2)源码编译安装
cd mariadb-10.2.29/
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci #粘贴有问题可能是\后面跟空格或者tab
make && make install && date && echo -e "\a"
3修改环境变量
ech0 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
4生成数据库文件
cd /app/mysql/
. scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql #要在/app/mysql下运行脚本,写上相对路径,需要调用/app/mysql下的bin/
5配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
6启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
service mysqld start
7安全初始化
mysql_secure_installation
8测试登录
mysql #如果有问题,可能是path变量没有添加,或者没有执行立即生效