使用cmake编译安装mysql

来源:互联网 发布:天津统计局人口数据 编辑:程序博客网 时间:2024/05/22 06:59

一、安装cmake

1.为什么用cmake?

mysql部分版本安装前编译需要用软件cmake,而不是我们之前通常使用的make!

百度百科:CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。

简言之,就是用了cmake编译工作可以在另一个指定的目录中而非源码目录中进行,源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译,可以跨平台的编译器。


2.编译安装

在Linux系统中将下载的cmake进行解压安装。

# tar xf cmake-3.5.2.tar.gz
# cd cmake-3.5.2

确保linux中已经安装了gcc、gcc-c++、openssl-devel

# ./bootstrap        (要查看bootstrap脚本的详细参数,请执行 ./bootstrap –help)
# make 
# make install

二、安装mysql数据库

1.数据库安装前准备

# groupadd -r mysql (添加mysql组)

# useradd -g mysql -r -s /sbin/nologin mysql  (添加mysql用户,并指定所属组与家目录)


# mkdir -p /data/mydata (一般将数据盘单独挂载比较好)

# chown -R mysql.mysql /data/mydata (更改数据库目录的属主属组)

  下载boost库,cmake编译mysql时需要用到。

# tar xf boost_1_59_0.tar.gz -C /usr/local/boost

 下载安装Curses库,cmake编译mysql时需要用到,redhat下软件包名称叫ncurses-devel。直接用yum安装。
    # yum install ncurses-devel

 扩展虚拟内存,cmake编译阶段可能会占用大量的内存,提前扩展虚拟内存,预防报错。
         # sudo dd if=/dev/zero of=/swapfile bs=64M count=16
         # sudo mkswap /swapfile
         # sudo swapon /swapfile

解压下载到的mysql。

# tar xf mysql-5.7.12.tar.gz  
# cd mysql-5.7.12

2.编译安装mysql

开始进行编译

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \         (反斜杠意思是换行,指定安装目录)
          -DMYSQL_DATADIR=/data/mydata \                   (指定数据存储目录)
          -DSYSCONFDIR=/etc \                              (配置文件目录)
          -DWITH_INNOBASE_STORAGE_ENGINE=1 \       (指定编译存储引擎)
          -DWITH_ARCHIVE_STORAGE_ENGINE=1 \        (指定编译存储引擎)
          -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \      (指定编译存储引擎)
          -DWITH_READLINE=1 \         (指定编译库)
          -DWITH_SSL=system \        (指定编译库)
          -DWITH_ZLIB=system \        (指定编译库)
          -DWITH_LIBWRAP=0 \        (指定编译库)
          -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \     (指定套接字路径)
          -DDEFAULT_CHARSET=utf8 \             (指定默认字符集)
          -DDEFAULT_COLLATION=utf8_general_ci      (指定默认编码)
          -DWITH_BOOST=/usr/local/boost       (指定boost库位置)

         
最后出现
           # — Build files have been written to: /root/software/mysql-5.7.12
则说明编译完成          

# make 
# make install

编译安装完成记得移除自己扩充的虚拟内存文件:
         # swapoff /swapfile
         # rm /swapfile

如果以上过程顺利执行,那么恭喜你,你的mysql已经安装成功了,但是如果编译安装过程中出错,没关系查看出错信息,清理此前的编译所生成的文件,

# rm CMakeCache.txt (相当于make clean)

根据出错提示信息,安装缺少的库文件或者环境,重新编译安装。

三、配置启动mysql

1.mysql初始化

# cd /usr/local/mysql
# chown -R :mysql /usr/local/mysql/   (因为mysql初始化时,mysql进程要对该文件有写权限)


# bin/mysqld – -initialize      (mysql初始化)

注意:和之前的版本的初始化不一样。而且初始化完成后,会生成一个随机密码
当屏幕出现: [Note] A temporary password is generated for root@localhost: _NKO,af8pf2t

说明初始化完成。

2.给mysql提供服务脚本、配置文件、修改环境变量
          # cp mysql.server /etc/init.d/mysqld  (给mysql提供服务脚本)
          # chkconfig – -add mysqld
          # chkconfig – -list mysqld

          # cd support-files

          #cp my-default.cnf /etc/my.cnf    (给mysql提供配置文件)
             写datadir=/data/mydata

这时,你便可以启动你的mysqld服务了。

#service mysqld start

如果正常启动,那么恭喜你,你已经接近成功。如果报以下错误:

Starting MySQL.. ERROR! The server quit without updating PID file (/data/mydata/VM_47_127_centos.pid).
没关系,是因为mysql进程对/data/mydata目录下的文件没有写权限造成的,只需要去/data/mydata目录下将文件属主属组改为mysql.mysql即可(属主要有写权限)。

#vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin (修改环境变量)

环境变量修改后并不会立即生效,要想立即生效请

# source  /etc/profile.d/mysql.sh

3.修改初始化随机密码
         # mysqladmin -h localhost -u root password ‘123456’ -p’?G5W&tz1z.cN’

4.启动自己的mysql

#mysql  -u’root’ -h’localhost’ -p         (成功启动mysql)

5.注意

这里需要注意,mysql是C/S架构的,我们这里安装的相当于是mysql的服务器端软件(server版一般提供客户端版的所有工具)。而mysql客户端只是提供了mysql、mysqldump之类的访问mysql数据库的工具。
因此,如果我们需要在其他主机访问我们mysql服务器,不需要再次下载安装mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz,只需要简单的安装一个客户端工具即可。(mysql客户端工具:MySQLfront, sqlyog, MySQLbrowser, ems MySQL manager)