centos7.3源编译mysql5.7.19

1、用cmake安装mysql源码

(1)第一种方式安装cmake,yum install gcc gcc-c++ ncurses-devel perl(默认没有安装cmake)

(2)下载cmake源码编译安装,https://cmake.org/download/


centos7.3源编译mysql5.7.19_第1张图片

2、我本人的文件都放在/usr/local/src下

(1)解压:tar zxvf cmake-3.9.2.tar.gz

(2)cd cmake-3.9.2中

(3)./configure --prefix=/usr/local/cmack  #根据需要填写安装路径

(4)make && make install

3、到mysql官网下载源码,https://dev.mysql.com/downloads/mysql/


centos7.3源编译mysql5.7.19_第2张图片


centos7.3源编译mysql5.7.19_第3张图片

4.wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.19.tar.gz 到/usr/local/src下

(1)解压 tar zxvf mysql.boost-5.7.19.tar.gz

(2) mv mysql-5.7.19 /usr/local/mysql    #移动MySQL源码到 /usr/local 目录下

(3)cd /usr/local/mysql /下 编译mysql

(4)mysql编译参数配置       注意:#使用 cmake 来编译MySQL(yum安装的直接 cmake 不用加路径)

/usr/local/cmake/bin/cmake . -DWITH_BOOST=/usr/local/mysql/boost \  #根据自身的安装路径调整路径以匹配您的安装

(ps:这一步先编译,在编译下面的参数。本人参数一起编译出现了编译错误)

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  #安装目录

-DMYSQL_DATADIR=/usr/local/mysql/data \  #数据库存放目录

-DSYSCONFDIR=/etc \  #系统配置目录

-DENABLED_LOCAL_INFILE=1 \ #允许从本地导入数据

-DDEFAULT_CHARSET=utf8 \ #使用 utf8 字符(这里本人安装的utf8mb4后启动报错,最后还是/etc/my.cnf中修改字符集)

-DDEFAULT_COLLATION=utf8_general_ci \ #校验字符

-DEXTRA_CHARSETS=all  #安装所有扩展字符集

报错:-- Configuring incomplete, errors occurred!

See also "/usr/local/mysql/CMakeFiles/CMakeOutput.log".

See also "/usr/local/mysql/CMakeFiles/CMakeError.log".


解决方法:缺少 ncurses-devel  直接 yum -y install ncurses-devel 

5、make && make install (这步花费时间会很长,看服务器配置)

6、更改/usr/local/mysql的权限配置(ps:参考链接https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html)

(1)#创建 MySQL组和MySQL用户

groupadd mysql

useradd -r -g mysql -s /bin/false mysql

(2)#更改MySQL文件夹权限

chown -R mysql:mysql /usr/local/mysql

(3)#初始化数据库并生成初始密码

/usr/local/mysql/bin/mysqld --initialize --user=mysql   # MySQL 5.7.6 and up

(4)记录生成的初始密码::a0esd.M=wQF

报错:

mysqld_safe error: log_error set to '/var/log/mariadb/mariadb.log' however file don't exists .Create writable for user 'mysql'.

解决方法:(/var/log/mariadb/mariadb.log'    不存在导致的)

mkdir /var/log/mariadb && touch /var/log/mariadb/mariadb.log

chown -R mysql:mysql /var/log/mariadb/

(5)启动mysql进程:bin/mysqld_safe--user=mysql&

这时会报错:

mysqld_safe mysqld from pid fiel /var/run/mariadb/mariadb.pid ended

解决方法:('/var/run/mariadb/mariadb.pid'  不存在导致的。)(ps:错误不一定一样,按照日志来解决问题)

mkdir /var/run/mariadb && touch /var/run/mariadb/mariadb.pid

chown -R mysql:mysql /var/run/mariadb/

(6)#登陆到MySQL

/usr/local/mysql/bin/mysql -uroot -p:a0esd.M=wQF

(6.1)报错地方:(这是由于mysql的sock服务不在/etc/my.cnf配置的socket路径不匹配)

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决方法:#软连接 mysql.sock 到 tmp

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

(6.2)但是本人添加软件,运行/usr/local/mysql/bin/mysql -uroot -p:a0esd.M=wQF还是报错

--initialize specified but the data directory has files in it. Aborting

解决方法:(说明mysql中的data目录已经有数据了)

cd /etc/lib/mysql下查看没有文件

若有,则mv mysql mysql.bak

再次重新登录运行/usr/local/mysql/bin/mysql -uroot -p:a0esd.M=wQF

(6.3)bin/mysqld--initialize--user=mysql

(ps:bin/mysqld_safe--user=mysql&这条命令在上面命令运行后一定要执行后再次执行/usr/local/mysql/bin/mysql -uroot -p:a0esd.M=wQF命令)

ps:本人卡在这里半天才发现进程没启动,登录不了

7、#修改MySQL初始密码

set password = password('XXXX');


注意:在编译过程中会出现很多无法预知的错误(由于系统版本问题,或者版本库的原因),出错后可以百度问题,基本能解决,文章只做记录,留在以后查看备用

你可能感兴趣的:(centos7.3源编译mysql5.7.19)