我试图从docker镜像连接到mysql数据库.然而,它正在抛出错误.
以下是我正在使用的泊坞窗图片. https://hub.docker.com/_/mysql/
以下是我用来运行docker镜像的命令.
docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=password -d mysql:8
Run Code Online (Sandbox Code Playgroud)
以下是docker ps
命令的输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f35d2e39476 mysql:8 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3306->3306/tcp
Run Code Online (Sandbox Code Playgroud)
如果我使用docker检查IP并检查该IP,则表明IP无法访问.
docker inspect 9f35d2e39476 | grep -i ipaddress
Run Code Online (Sandbox Code Playgroud)
如果我尝试连接使用localhost
,127.0.0.1
我得到以下错误.
无法加载身份验证插件'caching_sha2_password'.
axe*_*ira 27
我遇到了同样的问题,但是对于我来说,运行mysql 8.X的Docker容器并没有这样做.我把它塞进了容器里
docker exec -it CONTAINER_ID bash
Run Code Online (Sandbox Code Playgroud)
然后以root身份登录mysql
mysql --user=root --password
Run Code Online (Sandbox Code Playgroud)
输入root的密码(默认为'root')最后运行:
ALTER USER 'username' IDENTIFIED WITH mysql_native_password BY 'password';
Run Code Online (Sandbox Code Playgroud)
你们都准备好了.
这已在这里得到解答:帖子
psy*_*dia 20
我找到了解决这里的码头工人,撰写生火时:
services:
db:
image: mysql
command: mysqld --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
Run Code Online (Sandbox Code Playgroud)
也就是说,在启动MySQL时从新的MySQL密码/ auth机制恢复.
来自 psychemedia 的回答几乎对我有用(在 win 10 上全新安装)。还有一件非常重要的事情我必须做,因为这不是我第一次尝试。如果您附加了数据文件夹,在我的示例 mysql 卷中,首先清空/删除此文件夹的内容。我的工作 docker-compose 文件:
version: '3'
services:
mysql-development:
image: mysql:8.0.19
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: XXX
MYSQL_DATABASE: YYY
MYSQL_USER: ZZZ
MYSQL_PASSWORD: WWW
ports:
- "3306:3306"
- "33060:33060"
working_dir: /var/lib/mysql
volumes:
- "./mysql:/var/lib/mysql:rw"
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用终端本身连接到 MySQL,则您的构建可能有问题。但是,如果您尝试使用 GUI 客户端(例如 Sequel Pro)连接到 MySQL,它可能不支持 MySQL 8 的新身份验证功能。
作为一种解决方法,您--default-authentication-plugin=mysql_native_password
在末尾使用命令启动 docker 容器,它将默认 MySQL 使用旧的身份验证:
docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=password -d mysql:8 --default-authentication-plugin=mysql_native_password
归档时间: |
|
查看次数: |
20246 次 |
最近记录: |