亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

Linux環境,在Docker中運行MySQL

2023-04-11 02:57:42
46
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(//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="//www.centos.org/"
BUG_REPORT_URL="//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=//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 //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 //cmake.org/files/v3.23/cmake-3.23.0-rc2.tar.gz

當然也可以去github官方下載:

wget //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 //mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
yum install -y //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=//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
46
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(//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="//www.centos.org/"
BUG_REPORT_URL="//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=//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 //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 //cmake.org/files/v3.23/cmake-3.23.0-rc2.tar.gz

當然也可以去github官方下載:

wget //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 //mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
yum install -y //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=//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
請輸入你的評論
1
1