MySQL的源码编译与配置
MySQL的下载
MySQL在官方网站http://www.mysql.com下载,建议下载最新版本。本次源码编译所使用的MySQL安装包是mysql-boost-5.7.17.tar.gz。
Redhat6.5版本自带的cmake软件是2.6版本的,而MySQL编译要求版本为2.8,所以需要自己下载并安装cmake,可以通过源码安装。本次安装所使用的是cmake-2.8.12.2-4.el6.x86_64.rpm安装包。
使用的环境为redhat企业6.5版本。
MySQL源码编译与安装
MySQL的源码安装可以通过以下步骤来完成
[root@server1 mysql-5.7.17]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/
[root@server1 mysql-5.7.17]# make
[root@server1 mysql-5.7.17]# make install
cmake步骤中的参数代表:
-DCMAKE_INSTALL_PREFIX= # 安装目录
-DMYSQL_DATADIR= # 数据库存放目录
-DMYSQL_UNIX_ADDR= # socket文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 # 安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 # 安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 # 安装archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 安装blackhole存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 # 安装数据库分区
-DDEFAULT_CHARSET=utf8 # 使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci # 校验字符
-DEXTRA_CHARSETS=all # 安装所有扩展字符集
-DWITH_BOOST= # BOOST路径
上述步骤在执行cmake时,会报错,是因为缺少依赖包,根据报错内容安装相应的软件包,重新编译前需要使用”rm -f CMakeCache.txt”删除CMakeCache.txt文件,这个文件为cmake缓存文件,如果不删除会接着上次错误的地方开始编译,直接报错。
在进行源码编译时,安装了如下安装包。
[root@server1 mysql-5.7.17]# yum install -y gcc
[root@server1 mysql-5.7.17]# yum install -y gcc-c++
[root@server1 mysql-5.7.17]# yum install -y ncurses-devel
MySQL的配置
- 建立MySQL用户
[root@server1 mysql]# groupadd -g 27 mysql
[root@server1 mysql]# useradd -M -d /usr/local/lnmp/mysql/data -g 27 -u 27 -s /sbin/nologin mysql
[root@server1 mysql]# id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql)
- 编辑配置文件
MySQL启动时读取的配置文件时/etc/my.cnf,将之前的my.cnf备份,然后作如下操作:
[root@server1 mysql]# cp /etc/my.cnf /etc/my.cnf.back
[root@server1 mysql]# cp /usr/local/lnmp/mysql/support-files/my-default.cnf /etc/my.cnf
[root@server1 mysql]# vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
port = 3306
socket = /usr/local/lnmp/mysql/data/mysql.sock
- 复制启动脚本
将启动脚本复制到/etc/init.d目录中,并将MySQL添加到服务中。
[root@server1 mysql]# cp /usr/local/lnmp/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@server1 mysql]# chmod +x /etc/init.d/mysqld
[root@server1 mysql]# chkconfig --add mysqld
- 修改目录所有人
[root@server1 mysql]# chown -R mysql.mysql /usr/local/lnmp/mysql
- 加入环境变量
[root@server1 mysql]# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
[root@server1 mysql]# source ~/.bash_profile
- 初始化数据库
在数据库使用之前需要对数据库进行初始化。mysqld脚本在/usr/local/lnmp/mysql/bin目录下,因为添加了环境变量,所以可以直接用mysqld。
[root@server1 mysql]# mysqld --initialize-insecure --user=mysql
- 安全设置
为了MySQL的安全,将/usr/local/lnmp/mysql目录中,data目录以外的目录所有人和所有组全部设置为root,data目录设置为mysql。
[root@server1 mysql]# chown -R root.root /usr/local/lnmp/mysql
[root@server1 mysql]# chown -R mysql.mysql /usr/local/lnmp/mysql/data
测试
- 启动 MySQL
[root@server1 mysql]# /etc/init.d/mysqld start
- 初次登陆前修改密码
在数据库初始化时,设置的是非安全模式,即数据库的初始密码是空的。可以直接登陆,但是建议修改密码。
登陆数据库
密码修改后,就可以直接登陆数据库了。