目录

一、MYSQL源码编译

1、Mysql的下载

2、MySQL的编译/安装

3、配置MySQL

4、数据库的首次使用

本章总结:


一、MYSQL源码编译

1、Mysql的下载

MySQL源码架构 mysql源码编译_数据库

 2、MySQL的编译/安装

(1)获取编译包,并解压

MySQL源码架构 mysql源码编译_数据库_02

(2)安装编译器

MySQL用到的编译器是<cmake>。同时需要<gcc>和<gcc-c++>两个编译包。

MySQL源码架构 mysql源码编译_MySQL源码架构_03

 (3)cmake

以下为源码编译的官网文档,此页面中有cmake的各项参数的详细介绍。

MySQL源码架构 mysql源码编译_架构_04

第一步: 添加好参数后,cmake校验依赖性

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/mnt/mysql-5.7.31/boost/boost_1_59_0

这里尤其注意最后一项的路径。

MySQL源码架构 mysql源码编译_mysql_05

 发现警告,可以不用处理,只有发生错误时一定需要处理。

MySQL源码架构 mysql源码编译_mysql_06

 注意:cmake检查依赖性时,会将之前的报错信息存在下图标出的缓存文件中,所以第二次校验时要比第一次快得多。如果有更改或者警告修复后,一定要可以把这个缓存文件删除,cmake就会从头开始重新校验依赖。

MySQL源码架构 mysql源码编译_MySQL_07

第二步:make

make后它会开始编译,编译速度取决于电脑配置。比较慢,要等很久。 

MySQL源码架构 mysql源码编译_MySQL_08

编译花费大概40分钟,编译完成后,查看电脑闲置内存由之前的15G变为9.6G。

MySQL源码架构 mysql源码编译_MySQL_09

第三步:make install

安装到了</usr/local/mysql>目录下 

MySQL源码架构 mysql源码编译_MySQL_10

3、配置MySQL

(1)创建mysql用户和组

MySQL源码架构 mysql源码编译_MySQL_11

(2)创建mysql的执行命令脚本

MySQL源码架构 mysql源码编译_数据库_12

(3)创建数据目录并设置权限

这里将这个数据目录的所有人和所有组都设置为mysql,并将其权限设置为750(这里是755,不影响)

MySQL源码架构 mysql源码编译_数据库_13

(4)更改/etc下mysql的配置文件

这个</etc/my.cnf>的文件中主要更改对应的mysql数据目录的路径。和编译时保持一致。

MySQL源码架构 mysql源码编译_MySQL源码架构_14

(5)在系统的环境变量中添加mysql的bin路径,并<source>命令使其立即生效。

MySQL源码架构 mysql源码编译_MySQL_15

(6)mysql初始化,使用用户“mysql”的用户属性来初始化

mysqld --initialize --user=mysql

 初始化完成后,会生成一个临时密码(结尾显示的就是)

MySQL源码架构 mysql源码编译_mysql_16

(7)启动mysql数据库

MySQL源码架构 mysql源码编译_MySQL_17

(8)登录mysql

mysql -p

第一次登录mysql时需要输入初始化密码,上一步中生成的就是。但是这个临时密码登录后什么都干不了。

MySQL源码架构 mysql源码编译_mysql_18

(9)更改mysql的初始化密码

mysql_secure_installation

 初始化密码时,需要先输入默认的临时密码,然后再输入自己的密码。按照每一步骤,操作者自己选择yes或no

MySQL源码架构 mysql源码编译_MySQL_19

(10)重新登录mysql数据库

注意:如果使用明文密码登录的话,这里会有警告;所以一般都不在<-p>参数后加明文密码

MySQL源码架构 mysql源码编译_架构_20

4、数据库的首次使用

在nginx的发布目录下创建phpMyadmin的测试文件,并创建一个软连接。

MySQL源码架构 mysql源码编译_MySQL源码架构_21

测试的准备工作:

首先开启server1的php,否则上述的suoyouphp文件都将无法访问

MySQL源码架构 mysql源码编译_架构_22

 然后再更改nginx的配置,使其支持php网页。更改完成后重新载入nginx设置。

MySQL源码架构 mysql源码编译_数据库_23

测试:

浏览器访问<172.25.254.1/myadmin>,访问数据库的网页管理界面。

MySQL源码架构 mysql源码编译_MySQL_24

登录mysql数据库:

直接访问时报错,说是连接不到指定的文件/目录。这是因为server1的php服务中还无法读取mysql的数据目录。

MySQL源码架构 mysql源码编译_MySQL_25

 故障排查:在php的配置中添加mysql的数据目录。

更改</usr/local/php/etc/php.ini>中以下两个位置,添加上mysql的数据库目录。更改完成后重新载入php的服务配置<systemctl reload php-fpm>

MySQL源码架构 mysql源码编译_mysql_26

MySQL源码架构 mysql源码编译_数据库_27

重新测试:

登录后,进入到mysql数据库的管理页面。

MySQL源码架构 mysql源码编译_数据库_28

本章总结:

 1、MySQL官方文档

MySQL :: MySQL 5.7 Reference Manual :: 2.9 Installing MySQL from Sourcehttps://dev.mysql.com/doc/refman/5.7/en/source-installation.html2、mysql参数帮助:

MySQL源码架构 mysql源码编译_MySQL源码架构_29

3、mysql服务器的主从ID必须不同,ID为0时表示不允许任何主机复制。

4、mysql数据库刷新命令

flush privileges;            #刷新数据库