技术博文 · 2021-06-04 0

docker启动mysql 8.0,并使用mysql8.0客户端连接

docker启动mysql 8.0,并使用mysql8.0客户端连接

问题背景:

使用docker启动的mysql 8.0版本用本机的mysql去连接的时候出现2个错误

[root@192 conf.d]# mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@192 conf.d]# 
[root@swq-cloudm-deploy sidecar]# mysql -uroot -p -h 192.168.0.176
Enter password: 
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
[root@swq-cloudm-deploy sidecar]# 

问题一解法:

本地主机连接容器的mysql时,需要查到 /var/lib/mysql/mysql.sock。我们启动mysql容器后,在/opt/data/mysql/mysqld目录下有一个mysqld.sock。我们要把这个文件链接到本地主机的var/lib/myql目录中。

sudo ln -s /opt/data/mysql/mysqld/mysqld.sock /var/lib/mysql/mysql.sock

这样在运行mysql -uroot -p输入密码就能正常连接,docker容器中的mysql服务了。

问题二解法:

本地主机只需要安装mysql-community-client包就可以了

docker安装mysql 8.0.20 版本

docker安装mysql版本8.0.20

第一步 下拉镜像

docker pull mysql:8.0.20

image-20210604000253404

第二步 启动镜像

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20

img

查看是否启动成功

docker ps -a

img

第三步 启动成功后,进入容器内部拷贝配置文件,到宿主主机。

docker cp  mysql:/etc/mysql /mnt/sda1/mysql8.0.20

img

拷贝容器的 /etc/mysql目录到 主机目录/mnt/sda1/mysql8.0.20

第四步 删除mysql容器,重新创建容器

docker stop mysql
先停止容器

img

再删除容器
docker rm mysql

img

第五步 启动mysql ,挂载配置文件,数据持久化到宿主主机

启动脚本 文件名为mysql8.0.20.sh

vim mysql8.0.20.sh
#!/bin/sh
docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart unless-stopped \
-v /opt/mysql8.0.20/mysql:/etc/mysql \
-v /opt/mysql8.0.20/logs:/logs \
-v /opt/mysql8.0.20/data:/var/lib/mysql \
-v /opt/mysql8.0.20/mysqld:/var/run/mysqld \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.20

img

命令解释:

-p 端口映射
--privileged=true  挂载文件权限设置
--restart unless-stopped  设置 开机后自动重启容器
-v /mnt/sda1/mysql8.0.20/mysql:/etc/mysql    挂载配置文件
-v /mnt/sda1/mysql8.0.20/logs:/logs \      挂载日志
-v /mnt/sda1/mysql8.0.20/data:/var/lib/mysql \  挂载数据文件 持久化到主机,
-v /etc/localtime:/etc/localtime    容器时间与宿主机同步
-e MYSQL_ROOT_PASSWORD=123456    设置密码
-d  mysql:8.0.20   后台启动,mysql

第六步,执行脚本 启动镜像

sh mysql8.0.20.sh
docker ps -a 查看是否启动成功

img

Centos 7.x 获取,安装客户端连接MySQL8.0教程

第一步下载rpm包

我们下载这个RPM Bundle 版本

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar

在这里插入图片描述

因为这个版本里面包含了其他所有的RPM 源。

下载完成解压如下所示:

在这里插入图片描述

然后通过XFTP上传到/opt 文件夹下

第二步将软件库镜像安装到本地

下载好软件库镜像后,我们需要将其安装到本地仓库。

在下载好的rpm 的当前目录执行如下命令

sudo yum localinstall mysql-comunity-client-8.0.18-1.el7.x86_64.rpm
sudo yum install mysql-community-{client,common,libs}-*

第三步禁用mysql5.7,启用mysql8.0客户端

在MySQL Yum存储库中,不同版本的MySQL Community Servers托管在不同的子存储库中。 默认情况下,默认启用最新的GA系列(当前为MySQL 8.0)的子存储库,而所有其他系列(例如,MySQL 8.0系列)的子存储库均被禁用。 如果想修改这个开启和禁用,在此之前,我们需要安装一个类库,否则会提示找不到yum-config-manger 命令。

sudo yum install yum-utils -y

禁用MySQL 5.7,输入如下命令:

sudo yum-config-manager --disable mysql57-community 

使用MySQL 8.0,输入如下命令:

sudo yum-config-manager --enable mysql80-communit

第四步验证一下

mysql -uroot -p 

image-20210603235513626