由于在工作中最常用的开发是windows下集成的lamp。每次在linux下安装和配置mysql时,总会遇到不同的问题。这次就把在CentOS7下安装和配置mysql的过程记录下来,本次安装采用源码安装的方式。
下载源码包
在mysql官网找到Mysql Community Server的下载页面:
由于之前使用5.7版本,编译到47%左右时经常会卡死。网上很多人出现这个情况,据说是因为5.7版本编译比较吃内存。为了方便快捷,我采用5.5版本。平台选择为源码安装。下载tar.gz格式的linux通用版,复制链接地址,使用wget命令下载:
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.54.tar.gz
下载完成后解压
tar -zxvf mysql-5.5.54.tar.gz
安装5.5版本所需要的依赖
mysql有众多的依赖包,常见的如下。在编译过程中缺少哪个依赖包的话,会自动提示,我们根据缺失提示信息补安依赖就可以了。另外一个坑,就是版本的问题,mysql5.5和mysql5.7对依赖包的版本也可能出现不同,总之,若有问题,编译时会返回给我们错误信息,我们根据错误信息修正就ok了。
sudo yum install cmake gcc-c++ ncurses-devel perl-Data-Dumper boost-doc boost-devel bison boost
CMAKE的使用,mysql编译和安装
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。(以上内容摘自百科)。、
开始编译前,需要确保mysql的安装目录和数据存放目录存在,一般需要预先创建:
mkdir -p usr/local/mysql
mkdir -p usr/local/mysql/data
在解压出的源码目录下,进行CMake编译的参数配置。
各项参数以及说明如下:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data \ #数据文件存放位置
-DSYSCONFDIR=/etc \ #my.cnf路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #支持MyIASM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #支持InnoDB引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 \ #支持Memory引擎
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ #连接数据库socket路径
-DMYSQL_TCP_PORT=3306 \ #端口
-DENABLED_LOCAL_INFILE=1 \ #允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1 \ #安装支持数据库分区
-DEXTRA_CHARSETS=all \ #安装所有的字符集
-DDEFAULT_CHARSET=utf8 \ #默认字符
-DDEFAULT_COLLATION=utf8_general_ci
敲击回车后开始预编译。
完成以上过程后,就是make
编译;sudo make install
安装。
安装后的配置
安装完成后,需要创建mysql用户以及用户组
groupadd mysql
useradd -r -g mysql mysql
并将之前建立好的两个目录权限更改
cd /usr/local/mysql
chown -R root:mysql . //把当前目录中所有文件的所有者设为root,所属组为mysql
chown -R mysql:mysql data
在mysql的源码目录存在一个support-files文件夹,里面的内容是mysql的配置模板。具体的配置说明可以参考这个老兄的博客my.conf配置说明。在这里将mysql加入系统服务中,并配置开机自动启动。
cp support-files/mysql.server /etc/init.d/mysqld //将mysql的启动服务添加到系统服务中
cd /etc/init.d/
chkconfig --add mysqld //将mysql加到启动服务列表里
chkconfig mysqld on //让系统启动时自动打开mysql服务
进行mysql数据库的初始化mysql_install_db。安装完mysql server时,一般要执行这个脚本对数据库初始化。运行这个脚本,会初始化mysql的data目录,并且创建那些系统表。
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
至此,mysql的安装和配置已经ok了。
启动mysql
由于已经将mysql配置进了系统的服务,故可以使用服务的方式启动:
service mysqld start
service mysqld stop
service mysqld restart
手动启动mysql:
cd /usr/local/mysql
./bin/mysqld_safe --user=mysql & //启动MySQL
mysqladmin -u root -p shutdown // 停止MySQL
进入mysql的安装目录,执行
./mysql -u root
进入mysql命令行
show databases;
结果输出已存在的数据库。我们的sql已经配置并成功运行了。
可能遇到的问题
1、通过服务的方式启动mysql时,提示:
env: /etc/init.d/mysqld: Permission denied
该原因为init.d目录下的mysqld文件权限不足,执行:chmod a+wrx /etc/init.d/mysqld后重新尝试
2、注意etc/my.cnf文件的内容和cmake安装时配置的参数是否一致,不一致需要改动my.cnf的内容,主要是socket和datadir两个参数