Mysql-5.7.21 (cmake)编译安装

xiaohai 2020-10-22 11:40:09 2405人围观 标签: Mysql 
简介Mysql是经常使用的关系型数据库,那么使用之前需要先会安装。Mysql的安装方式有几种,本文我们主要记录下如何使用cmake进行编译安装。

一、单独安装cmake

a、下载地址

https://cmake.org/files/v3.11/cmake-3.11.0.tar.gz

b、解压
tar xf cmake-3.11.0.tar.gz
c、进入目录
cd cmake-3.11.0
d、执行
./configure
e、编译安装
gmake  && gmake install

二、安装Mysql

安装依赖包
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake
1、下载mysql-5.7.21源码包(mysql-5.7.21.tar.gz)
2、解压源码包
tar xf mysql-5.7.21.tar.gz
3、进入到目录
cd mysql-5.7.21
4、创建mysql的安装目录,进入到当前目录后:
mkdir mysql-5.7.21

创建软连接:

ln -s mysql-5.7.21/ mysql

注意 后面mysql这个不需要提前创建,否则会创建到下层目录下

5、创建mysql用户和用户组
addgroup mysql
adduser -g mysql  -s /sbin/nologin mysql 
6、mysql-5.7版本需要下载boost_1_59_0.tar.gz

下载好后解压即可

7、配置mysql预编译参数:
cmake -DCMAKE_INSTALL_PREFIX=/apps/mysql-5.7.21 \
-DMYSQL_UNIX_ADDR=/apps/mysql-5.7.21/data/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/apps/mysql-5.7.21/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/boost_1_59_0

选项参数说明:

  • -DCMAKE_INSTALL_PREFIX:安装路径
  • -DMYSQL_DATADIR:数据存放目录
  • -DWITH_BOOST:boost源码路径
  • -DSYSCONFDIR:my.cnf配置文件目录
  • -DEFAULT_CHARSET:数据库默认字符编码
  • -DDEFAULT_COLLATION:默认排序规则
  • -DENABLED_LOCAL_INFILE:允许从本文件导入数据
  • -DEXTRA_CHARSETS:安装所有字符集
8、编译及安装
make -j `grep processor /proc/cpuinfo | wc -l`
make install

注意:-j参数表示根据CPU核数指定编译时的线程数,可以加快编译速度。默认为1个线程编译,经测试单核CPU,1G的内存,编译完需要将近1个小时。

三、安装错误

1、编译错误:c++: internal compiler error: Killed (program cc1plus)

解决方式:

原因:内存不足
以下网上找到的解决方案
1. 创建分区文件,大小 2G
dd if=/dev/zero of=/swapfile bs=1k count=2048000
2. 生成 swap 文件系统
mkswap /swapfile
3. 激活 swap 文件
swapon /swapfile
4. 修改 /etc/fstab 文件,新增如下内容:
/swapfile swap swap defaults 0 0
2、错误:

– Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:64 (MESSAGE):
Curses library not found. Please install appropriate package,

  remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.

Call Stack (most recent call first):
cmake/readline.cmake:107 (FIND_CURSES)
cmake/readline.cmake:197 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:535 (MYSQL_CHECK_EDITLINE)

解决方法:

yum install ncurses-devel