在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的主要内容,如果未能解决你的问题,请参考以下文章