在CentOS7中手工编译安装Mysql5.7

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CentOS7中手工编译安装Mysql5.7相关的知识,希望对你有一定的参考价值。

在CentOS7中手工编译安装mysql5.7

实验介绍:由于Mysql自从5.5之后,都需要安装boost的函数库,所以和LAMP中编译安装Mysql略有不同,配置文件也不一样,下面来介绍。

1、首先查看CentOS7之前是否安装过Mysql,先要进行删除,使用的命令是。

rpm -q mysql

2、首先使用yum仓库安装所需要的开发包和软件包。

yum -y install ncurses                            #提供字符终端处理库
ncurses-devel                      #ncurses开发包
bison                              #语法分析器生成器
cmake                               #跨平台的安装(编译)工具

3、将Mysql5.7的源码包和boost源码包分别解压到指定位置,这里的位置要和下面配置中的路径对应。

tar zxvf mysql-5.7.17.tar.gz -C /opt/
tar zxvf boost_1_59_0.tar.gz -C /usr/local/

4、切换到boost文件的解压目录下,改下解压包名称,方便下面使用。

cd /usr/local/
mv boost_1_59_0  boost

5、准备工作结束后,切换至Mysql-5.7.17的解压路径下,执行配置文件。

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql                   #指定安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock             #指定sock文件的路径
-DSYSCONFDIR=/etc                                         #Mysql配置文件路径
-DSYSTEMD_PID_DIR=/usr/local/mysql                        #PID文件路径
-DDEFAULT_CHARSET=utf8                                    #默认字符集
-DDEFAULT_COLLATION=utf8_general_ci                       #指定默认的排序字符集
-DWITH_INNOBASE_STORAGE_ENGINE=1                          #下列几个是需要安装的引擎模块
-DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data                     #指定数据文件路径
-DWITH_BOOST=/usr/local/boost                             #boost函数库位置
-DWITH_SYSTEMD=1                                           #支持使用系统管理

6、添加运行Mysql的进程用户,并设置无法用shell登录。

useradd -s /sbin/nologin  mysql

7、配置文件安装完后,进行数据文件的编译和安装。这里注意磁盘空间和内存,若使用虚拟机安装的话,内存一定要调到2G以上,否则会在46%左右,编译无法通过,Mysql所在的目录容量大小最好大于5G。这里需要时间比较漫长,大概需要50分钟左右,视电脑情况而定。

make && make install

8、编译和安装完后,修改/usr/local/mysql即安装路径和/etc/my.cnf即主配置文件的属主和属组。

chown -R mysql.mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

9、下面修改Mysql的主配置文件/etc/my.cnf,主要修改下列几项。

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

10、修改系统的环境变量,使其能够识别mysql命令,修改完后,刷新,使环境变量生效。

echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH‘ >> /etc/profile
echo ‘export PATH‘ >> /etc/profile
source /etc/profile

11、重新切换到/usr/local/mysql路径下面,初始化数据库。

cd /usr/local/mysql/

bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

这里可能会出现下面的报错。需要我们删除/usr/local/mysql/data目录,再重新初始化,就能成功。

2018-06-26T01:46:23.274443Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2018-06-26T01:46:23.274552Z 0 [ERROR] Aborting

12、下面的设置主要为了能够让mysql支持系统管理。

cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ #使其支持systemctl管理
systemctl daemon-reload #重新加载系统服务管理模块

13、开启mysql服务,并查看3306端口是否开启。

systemctl start mysqld
netstat -anpt | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1290/mysqld     

14、设置数据库的root管理密码。

mysqladmin -u root -p password "abc123"    #给root账号设置密码为abc123提示输入的是原始密码(空),直接回车。

15、这里若出现下面的报错,需要我们重启mysql服务。

[[email protected] mysql]# mysqladmin -u root -p password "abc123"
Enter password: 
mysqladmin: connect to server at ‘localhost‘ failed
error: ‘Can‘t connect to local MySQL server through socket ‘/usr/local/mysql/mysql.sock‘ (2)‘
Check that mysqld is running and that the socket: ‘/usr/local/mysql/mysql.sock‘ exists!

15、使用root用户登录mysql。

mysql -u root -p        #提示输入的就是之前我们设置的abc123

16、最后我们就进入了数据库界面。

[[email protected] mysql]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 4
Server version: 5.7.17-log Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘h‘ for help. Type ‘c‘ to clear the current input statement.
mysql> 

17、出现这个界面,说明我们安装成功

以上是关于在CentOS7中手工编译安装Mysql5.7的主要内容,如果未能解决你的问题,请参考以下文章

centos7中编译安装mysql5.7.17

centos7.x编译安装mysql5.7.16

centos7编译安装mysql5.7.20版本

Centos7系统编译安装Mysql5.7.21

Mysql系列二:Centos7.4安装mysql5.7.28源码

centos7.2编译安装mysql5.7.21报错解决