一、安装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)