mysql5.7.21源码解析,MySQL-5.7.21源码编译安装

良好的学习心态是多么重要。做过一遍就不会忘记,但是时间长了肯定会忘记了。所以每次做了任何的新东西都会写成博客。

我依然要继续做巨人。

为什么要写一边5.7.21的。因为mysql5.7.5以后编译都需要用到boost具体是什么自行百度。我也不是太明白。

正文开始:

一、安装编译开发环境yum -y install gcc gcc-c++ ncurses ncurses-devel cmake

二、添加mysql禁止登录的用户及目录规划

[root@ajpapi ~]# groupadd mysql

[root@ajpapi ~]# useradd -r -g mysql -s /sbin/nologin mysql

MySQL数据库目录划分:

mysql软件目录: /usr/local/mysql

mysql数据目录:/usr/local/mysql/datadir

mysql日志目录:/usr/local/mysql/logdir

[root@ajpapi ~]# mkdir -p /usr/local/mysql

[root@ajpapi ~]# mkdir -p /usr/local/mysql/datadir

[root@ajpapi ~]# mkdir -p /usr/local/mysql/logdir

[root@ajpapi ~]# cd /usr/local/

[root@ajpapi local]# chown -R mysql.mysql mysql/

[root@ajpapi local]# chown -R mysql.mysql mysql/*

三、解压库文件(从MySQL 5.7.5开始Boost库是必需的)

[root@ajpapi ~]# tar -zxvf boost_1_59_0.tar.gz -C /usr/local/mysql/

[root@ajpapi ~]# cd /usr/local/mysql/

[root@ajpapi mysql]# mv boost_1_59_0 boost

四、解压mysql并编译安装

[root@ajpapi ~]# tar -zxvf mysql-5.7.21.tar.gz

[root@ajpapi ~]# cd mysql-5.7.21

[root@ajpapi mysql-5.7.21]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/datadir -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/mysql/boost -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EMBEDDED_SERVER=1

过程有点慢

[root@ajpapi mysql-5.7.21]# make

[root@ajpapi mysql-5.7.21]# make install

五、配置my.cnf文件

[client]

port=3306

socket=/usr/local/mysql/datadir/mysql.sock

default-character-set=utf8

[mysqld]

port=3306

user=mysql

socket=/usr/local/mysql/datadir/mysql.sock

pid-file=/usr/local/mysql/datadir/data/ajpapi.pid

basedir=/usr/local/mysql/

datadir=/usr/local/mysql/datadir/data

tmpdir=/usr/local/mysql/tmpdir

character-set-server=utf8

log_error=/usr/local/mysql/logdir/mysql.err

user=mysql

server-id=2

log_bin=/usr/local/mysql/logdir/binlog

general_log_file=/usr/local/mysql/logdir/general_log

general_log=1

slow_query_log=ON

long_query_time=2

slow_query_log_file=/usr/local/mysq/logdir/query_log

log_queries_not_using_indexes=ON

#此处一定要注意。否则真的会出错。

#配置文件里面涉及到的目录和文件需要手动创建一下。确保初始化库不出问题。

#[root@ajpapi mysql]# mkdir /usr/local/mysql/datadir/data

#[root@ajpapi mysql]# mkdir /usr/local/mysql/tmpdir

#[root@ajpapi mysql]# touch /usr/local/mysql/logdir/mysql.err

#[root@ajpapi mysql]# chown -R mysql.mysql /usr/local/mysql/*

六、初始化数据库并安装ssl,可指定文件生成路径,默认为data里面

[root@ajpapi mysql-5.7.21]# cd /usr/local/mysql/bin/

[root@ajpapi bin]# ls

[root@ajpapi bin]# ./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/datadir/data

[root@ajpapi bin]# ./mysql_ssl_rsa_setup

Generating a 2048 bit RSA private key

........+++

.....................+++

writing new private key to 'ca-key.pem'

-----

Generating a 2048 bit RSA private key

................................................................................+++

...............................................................................+++

writing new private key to 'server-key.pem'

-----

Generating a 2048 bit RSA private key

.......+++

................+++

writing new private key to 'client-key.pem'

-----

七、启动数据库

[root@ajpapi bin]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

[root@ajpapi bin]# /etc/init.d/mysqld start

Starting MySQL. SUCCESS!

八、登录数据库并修改密码

[root@ajpapi bin]# ./mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.7.21-log Source distribution

Copyright (c) 2000, 2018, 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> alter user 'root'@'localhost' identified by 'mysql';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

Bye

修改成功用mysql密码登陆。

[root@ajpapi bin]# ./mysql -uroot -pmysql

九、修改环境变量

[root@ajpapi ~]# vim /etc/profile

#mysql

PATH=/usr/local/mysql/bin/:/usr/local/mysql/lib/:$PATH

export PATH

[root@ajpapi ~]# source /etc/profile

[root@ajpapi ~]# echo $PATH

/usr/local/mysql/bin/:/usr/local/mysql/lib/:/usr/local/mysql/bin/:/usr/local/mysql/lib/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@ajpapi ~]# mysql -V

mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper

十、查看进程

[root@ajpapi ~]# ps -ef|grep mysql

root 20260 1 0 06:45 pts/1 00:00:00 /bin/sh /usr/local/mysql//bin/mysqld_safe --datadir=/usr/local/mysql/datadir/data --pid-file=/usr/local/mysql/datadir/data/ajpapi.pid

mysql 20571 20260 0 06:45 pts/1 00:00:04 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/datadir/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/usr/local/mysql/logdir/mysql.err --pid-file=/usr/local/mysql/datadir/data/ajpapi.pid --socket=/usr/local/mysql/datadir/mysql.sock --port=3306

root 20799 3209 0 08:01 pts/2 00:00:00 grep mysql

至此Mysql安装完毕,源码安装过于繁琐。建议使用官方编译好的二进制文件安装

官网地址:

wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

wget http://www.mysql.com/Downloads/MySQL-5.7/mysql-5.7.21.tar.gz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值