wget mysql5.7.19_dokcer容器中源码部署mysql5.7.19

本文档详细介绍了如何在Docker环境下,通过源码编译安装MySQL5.7.19。首先确保Docker版本和操作系统满足要求,然后下载并安装cmake,接着下载MySQL5.7.19源码包,进行编译和安装过程。编译时指定了相关参数,并在安装后进行了初始化、配置文件设置和启动服务的步骤。最后,文章还提到了解决密码过期问题的方法。
摘要由CSDN通过智能技术生成

部署环境说明:

docker-ce版本:

# docker version

Client:

Version: 17.03.1-ce

API version: 1.27

Go version: go1.7.5

Git commit: c6d412e

Built: Mon Mar 27 17:05:44 2017

OS/Arch: linux/amd64

Server:

Version: 17.03.1-ce

API version: 1.27 (minimum version 1.12)

Go version: go1.7.5

Git commit: c6d412e

Built: Mon Mar 27 17:05:44 2017

OS/Arch: linux/amd64

Experimental: false

msyql版本:msyql5.7.19 (源码包部署)

物理主机centos7.2

内核:3.10.0-514.21.1.el7.x86_64

全程编译安装(mysql官网针对容器也有方案:https://hub.docker.com/r/mysql/mysql-server/,本人尝试在容器中使用源码编译)

1、源码安装cmake工具(推介使用最新稳定版):

wget https://cmake.org/files/v3.9/cmake-3.9.0-Linux-x86_64.tar.gz(二进制的针对x86_64位架构的cpu)

wget https://cmake.org/files/v3.9/cmake-3.9.0.tar.gz(源码包)

#本人使用源码包安装cmake

yum -y install gcc gcc-c++ curl wget

tar xf cmake-3.9.0.tar.gz -C /usr/local/src/

cd /usr/local/src/

ln -sv cmake-3.9.0 cmake

cd cmake

./bootstrap

gmake

make install

# which cmake

/usr/local/bin/cmake

ok,cmake安装完毕

2、源码编译安装mysql5.7.19

yum -y install make gcc-c++ bison-devel ncurses-devel libaio libaio-devel perl-Data-Dumper net-tools

https://dev.mysql.com/downloads/file/?id=471658 #mysql-boost-5.7.19.tar.gz

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.19.tar.gz

https://dev.mysql.com/downloads/file/?id=471659 #mysql-5.7.19.tar.gz

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz

从mysql 5.7.5开始Boost库是必需的,需要下载:

tar xf mysql-boost-5.7.19.tar.gz

mv mysql-5.7.19 /usr/local/src/mysql-bootst-5.7.19 #解压后,这里需要改名,不然和mysql源码包就重名了

groupadd mysql

useradd -r -g mysql -s /bin/false mysql

mkdir /data

chown -R mysql.root /data/

tar xf mysql-5.7.19.tar.gz -C /usr/local/src/

cd /usr/local/src/

ln -sv mysql-5.7.19 mysql

cd mysql

mkdir bld

cd bld/

#进行编译安装

#这些编译参数需要按照自己的需求环境做修改,这里只是一个测试样例的cmake参数:

cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/data/ \

-DDOWNLOAD_BOOST=1 \

-DWITH_BOOST=/usr/local/src/mysql-bootst-5.7.19/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=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DWITH_EMBEDDED_SERVER=1

make -j4 #这里的-j参数是用来指定你cpu核心数的,32核心你可以指定-j32,这样编译更快,充分使用cpu资源

make install

3、初始化、提供配置文件并启动mysql5.7.19:

#修改安装目录下文件的属主:

cd /usr/local/mysql/

chown -R mysql .

chgrp -R mysql .

# ll

total 36

drwxr-xr-x 2 mysql mysql 4096 Jul 28 04:27 bin

-rw-r--r-- 1 mysql mysql 17987 Jun 22 14:13 COPYING

drwxr-xr-x 2 mysql mysql 55 Jul 28 04:26 docs

drwxr-xr-x 3 mysql mysql 4096 Jul 28 04:26 include

drwxr-xr-x 4 mysql mysql 191 Jul 28 04:26 lib

drwxr-xr-x 4 mysql mysql 30 Jul 28 04:26 man

drwxr-xr-x 10 mysql mysql 289 Jul 28 04:27 mysql-test

-rw-r--r-- 1 mysql mysql 2478 Jun 22 14:13 README

drwxr-xr-x 28 mysql mysql 4096 Jul 28 04:27 share

drwxr-xr-x 2 mysql mysql 90 Jul 28 04:27 support-files

初始化数据库和用户:

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/

2017-07-28T04:38:25.380874Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2017-07-28T04:38:26.671583Z 0 [Warning] InnoDB: New log files created, LSN=45790

2017-07-28T04:38:26.900198Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.

2017-07-28T04:38:26.970212Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 9900d70c-734e-11e7-9c5e-0242ac110003.

2017-07-28T04:38:26.975541Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.

2017-07-28T04:38:26.978879Z 1 [Note] A temporary password is generated for root@localhost: Ty(hjw?W6hcW

ok,数据库初始化完毕。

chown -R root .

# ll

total 36

drwxr-xr-x 2 root mysql 4096 Jul 28 04:27 bin

-rw-r--r-- 1 root mysql 17987 Jun 22 14:13 COPYING

drwxr-xr-x 2 root mysql 55 Jul 28 04:26 docs

drwxr-xr-x 3 root mysql 4096 Jul 28 04:26 include

drwxr-xr-x 4 root mysql 191 Jul 28 04:26 lib

drwxr-xr-x 4 root mysql 30 Jul 28 04:26 man

drwxr-xr-x 10 root mysql 289 Jul 28 04:27 mysql-test

-rw-r--r-- 1 root mysql 2478 Jun 22 14:13 README

drwxr-xr-x 28 root mysql 4096 Jul 28 04:27 share

drwxr-xr-x 2 root mysql 90 Jul 28 04:27 support-files

chown -R mysql.root /data/

# ll -d /data/

drwxr-xr-x 5 mysql root 147 Jul 28 04:38 /data/

# ll /data/

total 110628

-rw-r----- 1 mysql root 56 Jul 28 04:38 auto.cnf

-rw-r----- 1 mysql root 420 Jul 28 04:38 ib_buffer_pool

-rw-r----- 1 mysql root 12582912 Jul 28 04:38 ibdata1

-rw-r----- 1 mysql root 50331648 Jul 28 04:38 ib_logfile0

-rw-r----- 1 mysql root 50331648 Jul 28 04:38 ib_logfile1

drwxr-x--- 2 mysql root 4096 Jul 28 04:38 mysql

drwxr-x--- 2 mysql root 8192 Jul 28 04:38 performance_schema

drwxr-x--- 2 mysql root 8192 Jul 28 04:38 sys

提供配置文件:

(这里只是提供一个测试的配置文件,具体的可以查看官网的配置手册)

# cat /etc/my.cnf

[mysqld]

datadir=/data

socket=/tmp/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

skip-grant-tables

[mysqld_safe]

log-error=/var/log/mysql/mysql.log

pid-file=/var/run/mysql/mysql.pid

#

# include all files from the config directory

#

!includedir /etc/my.cnf.d

# cat /etc/my.cnf.d/client.cnf

#

# These two groups are read by the client library

# Use it for options that affect all clients, but not the server

#

[client]

socket = /tmp/mysql.sock

# This group is not read by mysql client library,

# If you use the same .cnf file for MySQL and MariaDB,

# use it for MariaDB-only client options

[client-mariadb]

启动mysql服务:

bin/mysqld_safe --user=mysql &

查看监听端口:

# ss -tnlp

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 80 :::3306 :::*users:(("mysqld",pid=10552,fd=31))

以下为可选操作:

给mysql服务一个启动脚本:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server

该脚本在容器中不适用,需要自己手动修改

4、连接mysql服务进行测试

[root@mysql ~]# mysql -u root -p

Enter password:

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

Your MySQL connection id is 3

Server version: 5.7.19 Source distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

+--------------------+

4 rows in set (0.00 sec)

MySQL [ocean]> select version();

+-----------+

| version() |

+-----------+

| 5.7.19 |

+-----------+

1 row in set (0.00 sec)

创建库、表都是没有问题的,到此,源码安装完毕。

说明:

连接数据库测试的时候,一开始遇到了密码过期的问题,处理也很简单,启动的时候跳过用户密码授权表,修改密码:

在[mysqld]下添加:

skip-grant-tables

然后重启mysql守护进程后修改密码:

update mysql.user set authentication_string=password('新密码') where user='root';

然后去掉skip-grant-tables配置重启mysql守护进程即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值