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
认证插件导致的。要解决这个问题,你可以通过以下两种方法之一:
-
使用 MySQL 8 兼容的客户端:
你可以使用 MySQL 8 兼容的客户端,或者更新你的 MySQL 客户端到最新版本,这样就可以正常连接到 MySQL 8 服务了。
-
修改 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下面安装代理,但是 还是没有脸上。暂时放一放。