MySQL--1--centos7.2安装
目录
I.MySQL 5.7
主要特性
原生支持Systemd
更好的性能:对于多核CPU
、固态硬盘、锁有着更好的优化
更好的InnoDB
存储引擎
更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库。
新增sys
库:以后这会是DBA
访问最频繁的库
更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,Oracle
官方正在解决MySQL
之前最大的难题原生JSON
类型的支持(JavaScript Object Notation)
注:JSON
(JavaScript
Object
Notation
)
是一种轻量级的数据交换格式。JSON
采用完全独立于语言的文本格式,但是也使用了类似于C
语言家族的习惯(包括C
、C++
、C#
、Java
、JavaScript
、Perl
、Python
等)。这些特性使JSON
成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON
语法是JavaScript
对象表示语法的子集。
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
II.安装mysql5.7.13
i.系统环境:centos7.2 x86_64
因为centos7.2
默认安装了mariadb-libs
,所以先要卸载掉
1.查看是否安装mariadb
#rpm -qa | grep mariadb
2.卸载mariadb
rpm -e --nodeps mariadb-libs
ii.安装依赖包
注: 相关依赖包的作用
cmake
:由于从MySQL5.5
版本开始弃用了常规的configure
编译方法,所以需要CMake
编译器,用于设置mysql
的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。
Boost
从MySQL 5.7.5
开始Boost
库是必需的,mysql
源码中用到了C++
的Boost
库,要求必须安装boost1.59.0
或以上版本
GCC
是Linux
下的C语言
编译工具,mysql
源码编译完全由C
和C++
编写,要求必须安装GCC
bison
:Linux
下C/C++
语法分析器
ncurses
:字符终端处理库
1.安装文件准备
下载
cmake-3.5.tar.gz
下载cmake-3.5.tar.gz
下载
ncurses-5.9.tar.gz
ftp://ftp.gnu.org/gnu/ncurses/
下载
bison-3.0.4.tar.gz
http://ftp.gnu.org/gnu/bison/
下载
mysql-5.7.13.tar.gz
wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.13.tar.gz
下载
Boost_1_59_0.tar.gz
wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
2.安装CMAKE
及必要的软件
i.安装cmake
cmake –version
---查看cmake
版本
ii.安装ncurses
iii.安装bison
iv.安装bootst
tar zxf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
3.创建mysql
用户和用户组及目录
# groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql
---新建msyql
组和msyql
用户禁止登录shell
#mkdir /usr/local/mysql ---创建目录
#mkdir /usr/local/mysql/data ---数据库目录
iii.编译安装mysql
1.解压mysql
源码包
2.执行cmake
命令进行编译前的配置
3.开始编译,编译安装
注1:配置解释:
选项 | 作用 |
---|---|
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql |
MySQL 安装的根目录 |
-DMYSQL_DATADIR=/usr/local/mysql /data |
MySQL 数据库文件存放目录 |
-DSYSCONFDIR=/etc |
MySQL 配置文件所在目录 |
-DWITH_MYISAM_STORAGE_ENGINE=1 |
添加MYISAM 引擎支持 |
-DWITH_INNOBASE_STORAGE_ENGINE=1 |
添加InnoDB 引擎支持 |
-DWITH_ARCHIVE_STORAGE_ENGINE=1 |
添加ARCHIVE 引擎支持 |
-DMYSQL_UNIX_ADDR=/usr/local/mysql /mysql.sock |
指定mysql.sock 位置 |
-DWITH_PARTITION_STORAGE_ENGINE=1 |
安装支持数据库分区 |
-DEXTRA_CHARSETS=all |
使MySQL 支持所有的扩展字符 |
-DDEFAULT_CHARSET=utf8 |
设置MySQL 的默认字符集为utf8 |
-DDEFAULT_COLLATION=utf8_general_ci |
设置默认字符集校对规则 |
-DWITH-SYSTEMD=1 |
可以使用systemd 控制mysql 服务 |
-DWITH_BOOST=/usr/local/boost |
指向boost 库所在目录 |
更多参数执行[root@localhost mysql-5.7.13]# cmake . –LH
注2:为了加快编译速度可以按下面的方式编译安装
make -j $(grep processor /proc/cpuinfo | wc –l)
-j
参数表示根据CPU
核数指定编译时的线程数,可以加快编译速度。默认为1个线程编译。
-j [jobs], --jobs[=jobs]
Specifies the number of jobs (commands) to run simultaneously. If there is more than one -j option, the last one is effective. If the -j option is given without an argument, make will not limit the num‐ber of jobs that can run simultaneously.
注3:若要重新运行cmake
配置,需要删除CMakeCache.txt
文件
# make clean
# rm -f CMakeCache.txt
优化Mysql
的执行路径
iv.设置权限并初始化MySQL
系统授权表
# cd /usr/local/mysql
# chown -R mysql:mysql **.** ---更改所有者,属组,注意是mysql .
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注1:以root
初始化操作时要加--user=mysql
参数,生成一个随机密码(注意保存登录时用)
注2:MySQL 5.7.6
之前的版本执行这个脚本初始化系统数据库
/usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
5.7.6
之后版本初始系统数据库脚本(本文使用此方式初始化)
#/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意:如果使用–initialize
参数初始化系统数据库之后,会生成root
用户的一个临时密码,如上图高亮中所示。
# chown -R mysql:mysql . ---改所有者,注意是root .
v.创建配置文件
# cd /usr/local/mysql/support-files
---进入MySQL安装目录支持文件目录
# cp my-default.cnf /etc/my.cnf ---复制模板为新的配置文件,
修改文件中配置选项,如下图所示,添加如下配置项
#vi /etc/my.cnf
vi.配置mysql
自动启动
服务启动失败,查看错误日志文件
在mysqld.service
,把默认的pid
文件指定到了/var/run/mysqld/
目录,而并没有事先建立该目录,因此要手动建立该目录并把权限赋给mysql
用户。
或者修改/usr/lib/system/system/mysqld.service
,修改内容如下:
#systemctl daemon-reload
再次启动mysql
服务
查看端口号
服务启动成功
访问MySQL
数据库
# mysql -u root -h 127.0.0.1 -p
---连接mysql,输入初始化时生成的随机密码
设置数据库管理员用户root
的密码
III.实现基于ssl
安全连接的主从复制
i.在主mysql
创建SSL/RSA
文件
# cd /usr/local/mysql/bin
---切换目录
# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
---创建新的SSL
文件
重启mysqld
服务
查看mysql
的错误日志
报错信息显示是不能获得私钥,执行ls
查看server-key.pem
发现没有r
权限
重启mysql
服务,这时错误日志中就没有报错了
登录mysql
,执行mysql > show variables like '%ssl%';
从上图可以看到mysql
支持了ssl
安全连接
注:启用mysql
支持ssl
安全连接主要用于mysql
主从复制(局域网可以非ssh
连接即明文复制,但internet
复制建议采用ssl连接)
在主mysql
上的操作完成,再生成一个复制帐号:REQUIRE SSL
在主mysql
上启用二进制日志并重启mysql
服务
添加下面的配置项
重启mysql
服务
查看主mysql
的状态
注:要记住上图所显示的file
和position
的值,配置从服务器要用到
防火墙允许3306/tcp
通信
ii.接着就去从上配置
从mysql
的/etc/my.cnf
文件内容
注:server_id
要唯一,不能和其他mysql
主机的重复
把主mysql
生成的证书给了从服务器
注:192.168.1.106
是从mysql
的IP地址
查看从mysql
复制过来的证书
设置client-key.pem
的r
权限
继续在从上配置SSL
:修改/etc/my.cnf
文件,添加如下内容
重启mysqld
服务
查看mysqld.err
是否有错误日志
查看SSL
是否被支持:
那么在配置主从复制之前可以在从mysql
上用SSL
连接主服务器试试:
注:192.168.1.108
是主mysql
的ip
地址
SSL
测试连接成功,并且登入的SSL
协议是: Cipher in use is
DHE-RSA-AES256-SHA
最后开始配置主从replicate
, 登录从mysql
在从上change master to
启用从
查看从的状态,以下两个值必须为yes
,代表从服务器能正常连接主服务器
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
测试:
在主mysql
上:
从服务器上
以上同步成功。
总结:
SSL
(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security
,TLS
)是为网络通信提供安全及数据完整性的一种安全协议。复制默认是明文进行传输的,通过SSL
加密可以大大提高数据的安全性。