一、安装源码包安装环境
yum install -y gcc gcc-c++ glibc automake autoconf libtool make
#下载安装boost库:https://www.boost.org/users/download/
tar -xzf boost_1_59_0.tar.gz /usr/local
cd boost_1_59_0
mv boost_1_59_0 boost
#下载cmake库
cd cmake
./bootstrap
gmake(与make类似)
gmake install
cmake -version
#下载MySQL源码包:http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.7/
二、安装MySQL
#安装MySQL的依赖包
yum install -y ncurses-devel
#创建MySQL目录
mkdir -p /database/mysql/{data,tmp,binlog,logs}
tree -L 2 /database/
#创建MySQL用户、组
groupadd mysql
useradd mysql -s /sbin/nologin -M -g mysql #-M:不创建家目录
id mysql
#解压源码包到/usr/local/src/mysql
tar -xzf mysql.tar.gz
cd mysql-5.7.33
#cmake 编译MySQL
cmake \
-DCMAKE_INSTALL_PREFIX=/database/mysql \
-DMYSQL_DATADIR=/database/mysql/data \
-DMYSQL_UNIX_ADDR=/database/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 \
-DWITH_BOOST=/usr/local/boost
######说明######
-DCMAKE_INSTALL_PREFIX=/database/mysql # MySQL的安装目录
-DMYSQL_DATADiR=/database/mysql/data \ #MySQL的数据文件目录
-DMYSQL_UNix_ADDR=/database/mysql/tmp/mysql.sock \ #设置mysql.sock路径
- DDEFAULT_CHARSET=utf8 \ #设置mysql默认字符集
- DDEFAULT_COLLATiON=utf8_general_ci \ #设置mysql的默认排序规则
- DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \ #设置mysql额外字符集规则
- DENABLED.LOCAL-INFILE=ON \ #设置mysql本地数据导入支持
- DWITH_INNOBASE_STORAGE_ENGINE=1 \ #启用存储引擎
- DWITH—FEDERATED_STORAGE_ENGINE=1 \
- DWITH—BLACKHOLE_STORAGE_ENGIN E=1 \
- DWITHOITT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DwiTH_ZLIB=bundled \ #启用zlib库支持
-DWITH_EMBEDDED_SERVER=1 \ #编辑嵌入式服务器支持
-DWITH_DEBUG=O \ #禁用debug默认为禁用
-DWITH-BOOST=/usr/local/boost #启用boost库支持
########
make install
三、初始化MySQL
#配置MySQL系统环境变量
echo 'export PATH=/database/mysql/bin:$PATH' >>/etc/profile
tail -1 /etc/profile
输出export PATH=/database/mysql/bin:$path
#使/etc/profile配置文件立即生效
source /etc/profile
echo $PATH
输出/database/mysql/bin:/usr/local/sbin:/usr/local/bi n:/usr/sbin:/usr/bi n:/root/bin
#更改MySQL安装目录的属主与属组
chown -R mysql:mysql /database/mysql/
修改MySQL配置文件的属主和属组
chown mysql:mysql /etc/my.cnf
#修改MySQL配置文件
##修改/etc/my.cnf文件,和5.6之前的版本不一样,5.7版本support-files目录下没有.cnf文件,因此,需要自己手动编辑
cp /etc/my.cnf /etc/my.cnf.bak
vim /etc/my.cnf
#####
[client]
port = 3306
socket = /database/mysql/tmp/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
user = mysql
basedir = /database/mysql
datadir = /database/mysql/data
pid-file = /database/mysql/mysqld.pid
socket = /database/mysql/tmp/mysql.sock
tmpdir = /database/mysql/tmp
character_set_server = utf8
server-id = 1
max_connections = 100
max_connect_errors = 10
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
log-bin = /database/mysql/binlog/mysql-bin
log-error = /database/mysql/logs/mysql_5_7_33. err
#####
#######说明
[client]
port = 3306 #端口
socket = /database/mysql/tmp/mysql.sock #用于本地连接的socket套接字
default-character-set = utf8 #编码
[mysqld]
port = 3306 #服务端口号
user = mysql #MySQL启动用户
basedir = /database/mysql #MySQL安装根目录
datadir = /database/mysql/data #MySQL数据文件所在位置
pid-file = /database/mysql/mysqld.pid #pid文件所在目录
socket = /database/mysql/tmp/mysql.sock #为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
tmpdir = /database/mysql/tmp #MySQL存放的临时目录
character_set_server = utf8 #数据库默认字符集
server-id = 1 #MySQL的唯一编号,每个mySQL服务id需唯一
max_connections = 100 #最大的连接数
max_connect_errors = 10 #最大的错误连接数
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
# sql_mode,定义了mysql应该支持的sql语法,数据校验
# NO_ENGINE_SUBSTTTUTION:如果需要的存储引擎被禁用或未编译,可以防止自动甘换存储引擎
# STRICT_TRANS_TABLES:存储引擎启用严格模式,非法数据值被拒绝
# NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户
# NO_AUTO_VALUE_ON_ZERO:默认情况下自增长列是从1开始的.如果你插入值为0的数据会报错,设置这个之后就可以正常插入为0的数据了
# NO_ZERO_IN_DATE:在严格模式,不接受月或口部分为0的日期
# NO_ZERO_DATE:在严格模式,不要将'0000-00-00,做为合法日期
# ERROR_FOR_DIVISION_BY_ZERO:在严格模式.在INSERT或UPDATE过程中,如果被零除(或
MOD(X, 0)),则产生错误(否则为警告).如果未给出该模式,被零除时MySQL返回NULL
# PIPES_AS_CONCAT:将| |视为字符中连接操作符(+)(同CONCAT()),而不视为OR
# ANS1_QUOTES:将'"'视为识别符引号(' ' '引号字符),不要视为字符串的引导字符
log-bin = /database/mysql/binlog/mysql-bin #开启二进制日志功能,binlog数据存放位置
log-error = /database/mysql/1ogs/mysql_5_7_33. err #MySQL生成的错误日志存放的路径
#
##########
#初始化数据库
cd /database/mysql
./bin/mysql --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data
##--initialize-insecure:生成初始化密码参数
## --user=mysql:初始化用户
##--basedir=/database/mysql:设定MySQL工作目录
##--datadir=/database/mysql/data:设定MySQL数据文件目录
#MySQL实例开启SSL链接
cd /database/mysql
./bin/mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data
#修改目录权限
cd /database/mysql/data
chmod +r server-key.pem
#拷贝MySQL启动脚本
cp /database/mysql/support-files/mysql.server /etc/init.d/mysql
#重新加载系统服务
systemctl daemon-reload
#启动mysql
/etc/init.d.mysql start