searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Linux环境,在Docker中运行MySQL

2023-04-11 02:57:42
37
0

一、Docker理解与安装

1.1 Docker概述与其原理

目前,docker的研发者们维护了相关的三个网站:

🕸三个网站分别介绍docker的构成、安装、使用、文档和仓库

Docker总的有以下几个部分:

Docker_Client是Docker安装在本地的客户端,可以通过docker build、docker pull、docker run等指令构建/拉取/运行程序。

Docker_Host是Docker安装在本地的主机,它通过拉取Registry仓库中的程序文件,在本地构成镜像。

Registry是仓库,仓库(Repository)是集中存放镜像文件的场所。

仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载;国内的公开仓库包括阿里云 、网易云等。

可以在这些仓库上注册自己的账号、上传程序,之后将这些程序拉取到docker中运行

Docker 镜像(Image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器; 就好似 Java 中的类和对象,类就是镜像,容器就是对象。

Docker 利用容器(Container)独立运行的一个或一组应用,容器是用镜像创建的运行实例。

它可以被启动、开始、停止、删除;每个容器都是相互隔离的,保证安全的平台。

可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。


🌍总结:

Docker 本身是一个容器运行载体或称之为管理引擎,我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件;只有通过这个镜像文件才能生成 Docker 容器;image 文件可以看作是容器的模板;Docker 根据 image 文件生成容器的实例;同一个 image 文件,可以生成多个同时运行的容器实例。

image 文件生成的容器实例,本身也是一个文件,称为镜像文件。

一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。

至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库中拉下来就可以了。

 

1.2 Docker的安装

1.2.1 安装前环境检查

首先判断测试机器上是否已经安装Docker,如果要重新安装,要保证删除干净才能安装。

如果有旧版本,需要:

卸载旧版本

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

再检查linux版本信息(centos环境):

  • 安装docker,linux版本要在7以上,系统内核版本要在3.10以上。

  • centos7.0和centos8.0docker的操作,支持的库是不同的。

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ uname -r
3.10.0-957.27.2.el7.x86_64
[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[@evm-c8e31fv9upsvqdh319c0 test-mysql]$
linux版本信息
1.2.2 安装相关软件包及依赖

yum安装gcc相关环境(需要确保 虚拟机可以上外网 )

yum -y install gcc
yum -y install gcc-c++

gcc相关环境安装完成后,可以通过gcc -v查看

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

安装需要的软件包

yum install -y yum-utils

以上就安装完了docker所需要的相关软件包


接下来使用yum安装docker,因为yum刚开始默认使用国外的镜像仓库,这里推荐改成国内的。

🌏添加阿里云的环境:

yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

🌍更新yum软件包索引:

yum makecache fast

然后使用yum安装docker

yum -y install docker

使用docker -v查看docker版本和安装结果。

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ docker -v
Docker version 1.13.1, build 7d71120/1.13.1
[@evm-c8e31fv9upsvqdh319c0 test-mysql]$

至此,docker的安装完成,总的来说就是在已满足的环境下使用yum install -y docker去安装。

可以使用docker -h去查看docker相关的命令。

🍊 为了更加方便的使用docker,需要将其加入开机启动中。

启动前应当设置源

vim /usr/lib/systemd/system/docker.service

使用:

systemctl enable docker
systemctl start docker

启动docker服务。

注意:测试机器上可能有其他人的docker服务,停止之前最好先查看

1.2.3docker初始化及登录使用

docker的仓库中有很多的源,可以拉取其中的镜像到本地。

例如需要在本地运行centos7:docker pull centos:centos7

拉取了这个镜像之后需要初始化/启动容器。

docker run --net bridge --privileged -itd --cpus=4 centos:centos7 /usr/sbin/init

参数很重要:/usr/sbin/init是docker启动的自己的目录,不能更改。

但是docker运行输出的相关数据可以和物理机形成一个映射。通过-v参数设置

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ sudo docker run -v /flash/xxx/data/test-mysql/:/data/ --net bridge --privileged -itd --cpus=4 centos:centos7 /usr/sbin/init
xxx0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

-v 物理机路径:docker路径,这样docker中的路径下的数据目录就会同步到物理机的路径中。

之后输出的一串字符xxx0xxxxxxxxxxxxxxxxx就是docker的镜像的标号。就像物理机上evm-c8e31fv9upsvqdh319c0这一串一样。

通过这个字符串去登录特定的docker中的运行的镜像。

登录:

docker exec -it [id] /bin/bas

id就是这个字符串,不用输全,docker会自动匹配到。

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ sudo docker exec -it bf3 /bin/bash
[root@xxxcde42f91f /]# ls
anaconda-post.log data etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@xxxcde42f91f /]#

其中,xxx[id]就代表root@xxxcde42f91f的编号。

之后就登录上了docker中的centos7的环境。

退出docker使用centos7命令用exit,不要简单的ctrl + z

遇到container不正常时,可以重启它,注意不要随便重启docker服务,

docker contianer restart

二、运行MySQL程序

2.1 编译mysql环境准备

安装相关依赖:

sudo yum install -y epel-release
sudo yum install -y wget bzip2 automake autoconf libtool make bison libaio \
libaio-devel git openssl openssl-devel curl-devel lrzsz libffi-devel \
ncurses-devel zip unzip perl-JSON perl-Digest-MD5 \
&& $SUDO yum clean all

这些依赖是5.7版本用的比较多,如果不装这些依赖,会在编译过程中提示各种问题。

cmake安装,对于5.7来说,yum默认的低版本就可以满足要求,但是8.0版本的mysql的编译需要cmake3.0以上才能支持。

相对于传统的去官网下载安装包后解压编译安装,更加推荐wget国内源,解决网络连接问题后,再解压编译安装。

较为快一点版本:

wget https://cmake.org/files/v3.23/cmake-3.23.0-rc2.tar.gz

当然也可以去github官方下载:

wget https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3.tar.gz

因为docker中的环境和物理机器上的目录构成了映射,所以可以直接在物理机上下载。之后在docker中的centos7上就有相关的文件。

cmake-3.23.0-rc2版本为例

#解压
tar -zxvf cmake-3.23.0-rc2.tar.gz
cd cmake-3.23.0-rc2
./bootstrap --prefix=/usr/local
#编译安装
make && make install
#配置path
vi ~/.bash_profile
PATH=/usr/local/bin:$PATH:$HOME/bin

安装高版本的cmake时,./boostrap --prefix=/usr/lcoal需要高版本的GCC支持,所以需要先安装高板的的gcc。

yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-2-3.el7.centos.noarch.rpm
yum install devtoolset-11-gcc-c++
source /opt/rh/devtoolset-11/enable

安装完成之后查看gcc 版本

[root@aa0cde42f91f data]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-11/root/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-11/root/usr --mandir=/opt/rh/devtoolset-11/root/usr/share/man --infodir=/opt/rh/devtoolset-11/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-11.2.1-20220127/obj-x86_64-redhat-linux/isl-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 11.2.1 20220127 (Red Hat 11.2.1-9) (GCC)
[root@aa0cde42f91f data]#

然后再编译cmake。

编译安装cmake完毕,再配置path之后就可以使用了。

[root@aa0cde42f91f cmake-3.23.0-rc2]# cmake -version
cmake version 3.23.0-rc2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
[root@aa0cde42f91f cmake-3.23.0-rc2]#

🍎到此,安装mysql需要的工具包,cmake、gcc都准备好了。

  • 工具包是最开始安装的,主要是解决5.7版本各种库缺失的问题。

  • cmake工具是mysql高版本要求,必须要cmake3.0以上。

  • gcc也是mysql高版本的要求,不同的小版本不一样,但是gcc11.0以上完全可以满足要求。

2.2 注意弱密码问题

首先,mtr测试的时候是可能产生弱密码的,例如有些用户权限,如果并没有创建用户直接赋权,那么mysql将自动为这个用户创建一个空的密码。

其次,mysql编译安装的时候是不能有弱密码的,不能用 --insecuret的方式去初始化,必须有秘密,之后也必须改密码。

2.3 编译安装mysql

在自己的物理机器上传需要编译安装的版本,之后在容器中看到一样的数据,然后进行编译安装。

以5.7版本为例,在物理机器上传需要安装的源代码。下载源码解压后,cmake命令

cmake . -DCMAKE_INSTALL_PREFIX=../mysqlexec -DMYSQL_DATADIR=../mysqldata -DWITH_BOOST=./boost -DSYSCONFDIR=./etc -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=1

之后编译安装:

make -j 5&& make install

如果没有配置文件就创建配置文件:

配置文件my.cnf内容:

[mysqld]
user = root
port=9888
socket=/data/mysqldata/mysql_9888.sock
datadir=/data/mysqldata
log_error=/data/mysqldata/logs/error.log
basedir=/data/mysqlexec/
server-id=131 #here use ip tail

初始化mysql(必须有密码):

./mysqld --initialize --user=root --basedir=/flash/xxx/data/teledb8.0/mysqlexec/ --datadir=/flash/xxx/data/teledb8.0/mysqldata/

按配置文件启动:

./mysqld_safe --defaults-file=/data/mysqlexec/etc/my.cnf &

启动后修改密码:

ALTER USER USER() IDENTIFIED BY '新密码'

修改密码后重新登录就可以了:

[root@aa0cde42f91f bin]# ./mysql --socket=/data/mysqldata/mysql.sock -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.46-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, 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>

至此,在docker中安装运行mysql完毕。

0条评论
0 / 1000
张凡
7文章数
0粉丝数
张凡
7 文章 | 0 粉丝
原创

Linux环境,在Docker中运行MySQL

2023-04-11 02:57:42
37
0

一、Docker理解与安装

1.1 Docker概述与其原理

目前,docker的研发者们维护了相关的三个网站:

🕸三个网站分别介绍docker的构成、安装、使用、文档和仓库

Docker总的有以下几个部分:

Docker_Client是Docker安装在本地的客户端,可以通过docker build、docker pull、docker run等指令构建/拉取/运行程序。

Docker_Host是Docker安装在本地的主机,它通过拉取Registry仓库中的程序文件,在本地构成镜像。

Registry是仓库,仓库(Repository)是集中存放镜像文件的场所。

仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载;国内的公开仓库包括阿里云 、网易云等。

可以在这些仓库上注册自己的账号、上传程序,之后将这些程序拉取到docker中运行

Docker 镜像(Image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器; 就好似 Java 中的类和对象,类就是镜像,容器就是对象。

Docker 利用容器(Container)独立运行的一个或一组应用,容器是用镜像创建的运行实例。

它可以被启动、开始、停止、删除;每个容器都是相互隔离的,保证安全的平台。

可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。


🌍总结:

Docker 本身是一个容器运行载体或称之为管理引擎,我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件;只有通过这个镜像文件才能生成 Docker 容器;image 文件可以看作是容器的模板;Docker 根据 image 文件生成容器的实例;同一个 image 文件,可以生成多个同时运行的容器实例。

image 文件生成的容器实例,本身也是一个文件,称为镜像文件。

一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。

至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库中拉下来就可以了。

 

1.2 Docker的安装

1.2.1 安装前环境检查

首先判断测试机器上是否已经安装Docker,如果要重新安装,要保证删除干净才能安装。

如果有旧版本,需要:

卸载旧版本

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

再检查linux版本信息(centos环境):

  • 安装docker,linux版本要在7以上,系统内核版本要在3.10以上。

  • centos7.0和centos8.0docker的操作,支持的库是不同的。

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ uname -r
3.10.0-957.27.2.el7.x86_64
[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[@evm-c8e31fv9upsvqdh319c0 test-mysql]$
linux版本信息
1.2.2 安装相关软件包及依赖

yum安装gcc相关环境(需要确保 虚拟机可以上外网 )

yum -y install gcc
yum -y install gcc-c++

gcc相关环境安装完成后,可以通过gcc -v查看

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

安装需要的软件包

yum install -y yum-utils

以上就安装完了docker所需要的相关软件包


接下来使用yum安装docker,因为yum刚开始默认使用国外的镜像仓库,这里推荐改成国内的。

🌏添加阿里云的环境:

yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

🌍更新yum软件包索引:

yum makecache fast

然后使用yum安装docker

yum -y install docker

使用docker -v查看docker版本和安装结果。

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ docker -v
Docker version 1.13.1, build 7d71120/1.13.1
[@evm-c8e31fv9upsvqdh319c0 test-mysql]$

至此,docker的安装完成,总的来说就是在已满足的环境下使用yum install -y docker去安装。

可以使用docker -h去查看docker相关的命令。

🍊 为了更加方便的使用docker,需要将其加入开机启动中。

启动前应当设置源

vim /usr/lib/systemd/system/docker.service

使用:

systemctl enable docker
systemctl start docker

启动docker服务。

注意:测试机器上可能有其他人的docker服务,停止之前最好先查看

1.2.3docker初始化及登录使用

docker的仓库中有很多的源,可以拉取其中的镜像到本地。

例如需要在本地运行centos7:docker pull centos:centos7

拉取了这个镜像之后需要初始化/启动容器。

docker run --net bridge --privileged -itd --cpus=4 centos:centos7 /usr/sbin/init

参数很重要:/usr/sbin/init是docker启动的自己的目录,不能更改。

但是docker运行输出的相关数据可以和物理机形成一个映射。通过-v参数设置

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ sudo docker run -v /flash/xxx/data/test-mysql/:/data/ --net bridge --privileged -itd --cpus=4 centos:centos7 /usr/sbin/init
xxx0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

-v 物理机路径:docker路径,这样docker中的路径下的数据目录就会同步到物理机的路径中。

之后输出的一串字符xxx0xxxxxxxxxxxxxxxxx就是docker的镜像的标号。就像物理机上evm-c8e31fv9upsvqdh319c0这一串一样。

通过这个字符串去登录特定的docker中的运行的镜像。

登录:

docker exec -it [id] /bin/bas

id就是这个字符串,不用输全,docker会自动匹配到。

[@evm-c8e31fv9upsvqdh319c0 test-mysql]$ sudo docker exec -it bf3 /bin/bash
[root@xxxcde42f91f /]# ls
anaconda-post.log data etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@xxxcde42f91f /]#

其中,xxx[id]就代表root@xxxcde42f91f的编号。

之后就登录上了docker中的centos7的环境。

退出docker使用centos7命令用exit,不要简单的ctrl + z

遇到container不正常时,可以重启它,注意不要随便重启docker服务,

docker contianer restart

二、运行MySQL程序

2.1 编译mysql环境准备

安装相关依赖:

sudo yum install -y epel-release
sudo yum install -y wget bzip2 automake autoconf libtool make bison libaio \
libaio-devel git openssl openssl-devel curl-devel lrzsz libffi-devel \
ncurses-devel zip unzip perl-JSON perl-Digest-MD5 \
&& $SUDO yum clean all

这些依赖是5.7版本用的比较多,如果不装这些依赖,会在编译过程中提示各种问题。

cmake安装,对于5.7来说,yum默认的低版本就可以满足要求,但是8.0版本的mysql的编译需要cmake3.0以上才能支持。

相对于传统的去官网下载安装包后解压编译安装,更加推荐wget国内源,解决网络连接问题后,再解压编译安装。

较为快一点版本:

wget https://cmake.org/files/v3.23/cmake-3.23.0-rc2.tar.gz

当然也可以去github官方下载:

wget https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3.tar.gz

因为docker中的环境和物理机器上的目录构成了映射,所以可以直接在物理机上下载。之后在docker中的centos7上就有相关的文件。

cmake-3.23.0-rc2版本为例

#解压
tar -zxvf cmake-3.23.0-rc2.tar.gz
cd cmake-3.23.0-rc2
./bootstrap --prefix=/usr/local
#编译安装
make && make install
#配置path
vi ~/.bash_profile
PATH=/usr/local/bin:$PATH:$HOME/bin

安装高版本的cmake时,./boostrap --prefix=/usr/lcoal需要高版本的GCC支持,所以需要先安装高板的的gcc。

yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-2-3.el7.centos.noarch.rpm
yum install devtoolset-11-gcc-c++
source /opt/rh/devtoolset-11/enable

安装完成之后查看gcc 版本

[root@aa0cde42f91f data]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-11/root/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-11/root/usr --mandir=/opt/rh/devtoolset-11/root/usr/share/man --infodir=/opt/rh/devtoolset-11/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-11.2.1-20220127/obj-x86_64-redhat-linux/isl-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 11.2.1 20220127 (Red Hat 11.2.1-9) (GCC)
[root@aa0cde42f91f data]#

然后再编译cmake。

编译安装cmake完毕,再配置path之后就可以使用了。

[root@aa0cde42f91f cmake-3.23.0-rc2]# cmake -version
cmake version 3.23.0-rc2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
[root@aa0cde42f91f cmake-3.23.0-rc2]#

🍎到此,安装mysql需要的工具包,cmake、gcc都准备好了。

  • 工具包是最开始安装的,主要是解决5.7版本各种库缺失的问题。

  • cmake工具是mysql高版本要求,必须要cmake3.0以上。

  • gcc也是mysql高版本的要求,不同的小版本不一样,但是gcc11.0以上完全可以满足要求。

2.2 注意弱密码问题

首先,mtr测试的时候是可能产生弱密码的,例如有些用户权限,如果并没有创建用户直接赋权,那么mysql将自动为这个用户创建一个空的密码。

其次,mysql编译安装的时候是不能有弱密码的,不能用 --insecuret的方式去初始化,必须有秘密,之后也必须改密码。

2.3 编译安装mysql

在自己的物理机器上传需要编译安装的版本,之后在容器中看到一样的数据,然后进行编译安装。

以5.7版本为例,在物理机器上传需要安装的源代码。下载源码解压后,cmake命令

cmake . -DCMAKE_INSTALL_PREFIX=../mysqlexec -DMYSQL_DATADIR=../mysqldata -DWITH_BOOST=./boost -DSYSCONFDIR=./etc -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=1

之后编译安装:

make -j 5&& make install

如果没有配置文件就创建配置文件:

配置文件my.cnf内容:

[mysqld]
user = root
port=9888
socket=/data/mysqldata/mysql_9888.sock
datadir=/data/mysqldata
log_error=/data/mysqldata/logs/error.log
basedir=/data/mysqlexec/
server-id=131 #here use ip tail

初始化mysql(必须有密码):

./mysqld --initialize --user=root --basedir=/flash/xxx/data/teledb8.0/mysqlexec/ --datadir=/flash/xxx/data/teledb8.0/mysqldata/

按配置文件启动:

./mysqld_safe --defaults-file=/data/mysqlexec/etc/my.cnf &

启动后修改密码:

ALTER USER USER() IDENTIFIED BY '新密码'

修改密码后重新登录就可以了:

[root@aa0cde42f91f bin]# ./mysql --socket=/data/mysqldata/mysql.sock -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.46-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, 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>

至此,在docker中安装运行mysql完毕。

文章来自个人专栏
linux-docker
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
1