docker之旅 6.docker下面安装mysql, 访问mysql

一不小心 又踩坑了。

# 拉取 mysql 镜像
docker pull mysql 

 修改 docker-compose.yml ,创建一个 mysql 的容器,跟随系统启动

 这是我的  docker-compose.yml  文件:

version: '2.x'

services:
  myNginx:
    image: nginx
    restart: always

  myRedis:
    image: redis
    restart: always
    ports:
      - "6379:6379"

  mysql:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: henry6764  # 设置 MySQL root 用户的密码
      MYSQL_USER: henry  # 设置自定义用户名
      MYSQL_PASSWORD: henry6764  # 设置自定义用户的密码
    ports:
      - "3307:3306"  # 将容器的 MySQL 默认端口3306 映射到宿主机的 3307 端口
    volumes:
      - /home/henry/mysqlFilePath:/var/lib/mysql  # 将容器内的 MySQL 数据目录挂载到宿主机上

因为我的centos7下面安装过  mariadb了,3306 端口号被占用,这里把mysql的端口号改为了 3307。(需要手动去开启端口号)

1.获取 docker 下面 mysql 的ip地址:

docker  ps 

查看 容器id信息。

2.确定 MySQL 容器的 IP 地址:

首先,你需要确定 MySQL 容器的 IP 地址。你可以使用以下命令获取 MySQL 容器的 IP 地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器ID或容器名称

将上面命令中的 容器ID或容器名称 替换为你的 MySQL 容器的 ID 或名称,然后执行该命令,即可获取到 MySQL 容器的 IP 地址。

 

因为默认安装了最新的 mysql,所以导致 登录的时候失败了。(centos7下面的mysql客户端比较旧)

由于 MySQL 8 默认使用了 caching_sha2_password 认证插件导致的。要解决这个问题,你可以通过以下两种方法之一:

  1. 使用 MySQL 8 兼容的客户端:

    你可以使用 MySQL 8 兼容的客户端,或者更新你的 MySQL 客户端到最新版本,这样就可以正常连接到 MySQL 8 服务了。

  2. 修改 MySQL 用户的认证插件:

    如果你希望继续使用旧版本的 MySQL 客户端,你可以在 MySQL 服务器上修改用户的认证插件,以便兼容旧版客户端。

    下面是具体的步骤:

    • 首先,使用一个兼容的客户端连接到 MySQL 服务器。

    • 然后,登录到 MySQL 服务器并执行以下 SQL 命令:

       
      ALTER USER 'henry'@'%' IDENTIFIED WITH mysql_native_password BY 'henry6764';

       

      这个命令会将用户 henry 的认证插件修改为 mysql_native_password,以兼容旧版的 MySQL 客户端。

      如果你希望更改的是本地用户而不是远程用户,将 '%' 替换为 'localhost'

    然后,尝试使用你的 MySQL 客户端连接到 MySQL 服务器,应该就不会再出现上述错误了。


 

这里,我采用的方法2.

先用 

docker ps

 查看 mysql 的 容器id, 假设为  123456

再使用 docker  exec 命令进入 mysql. 注意,我们假设 123456 是我们查询到的容器id。具体使用的时候,这个数字要自己替换。  

docker   exec  -it   123456    /bin/bash  

进入到mysql 所在的容器之后,执行

ALTER USER 'henry'@'%' IDENTIFIED WITH mysql_native_password BY 'henry6764';

然后退出。

然后,我们就可以在 centos7下面,通过 mysql 客户端工具,去访问  容器下面的 mysql 了。

mysql -u henry   -h 172.18.0.4  -p
172.18.0.4  是mysql容器的ip地址。

 

总结:

这篇文章主要是介绍

1.如何安装mysql容器?

2.如何去修改mysql 8 的一些特性(因为安装的mysql 是mysql 8最新版本),让旧版本 mysql客户端 也能登录mysql8 

3.如何在centos7下面 使用mysql 工具,登录到 docker下面的mysql容器。

 

未解决问题:

windows下面的dbeaver 想去连上 centos7(虚拟机) 下面的 docker 的 mysql .

试过在centos7下面安装代理,但是 还是没有脸上。暂时放一放。

 

posted @ 2024-04-27 00:28  He_LiangLiang  阅读(32)  评论(0编辑  收藏  举报