在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服务。

[root@localhost 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、最后我们就进入了数据库界面。

[root@localhost 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、出现这个界面,说明我们安装成功

猜你喜欢

转载自blog.51cto.com/10693404/2132822