当前位置: 首页 > 知识库问答 >
问题:

无法从本地连接到mysql docker

汪翰墨
2023-03-14

我试图连接到mysql数据库从docker图像。然而,这是投掷错误。

下面是我正在使用的docker图像。https://hub.docker.com/_/mysql/

下面是我用来运行docker映像的命令。

docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=password -d mysql:8

以下是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

如果我使用docker检查IP并ping该IP,则显示IP不可访问。

docker inspect 9f35d2e39476 | grep -i ipaddress

如果我尝试使用localhost127.0进行连接。0.1我遇到以下错误。

无法加载身份验证插件“缓存\u sha2\u密码”。

共有3个答案

程卓君
2023-03-14

我也有同样的问题,但对于运行mysql 8的Docker容器来说,这并没有解决这个问题。我在集装箱里登记了

docker exec -it CONTAINER_ID bash

然后以root用户身份登录mysql

mysql --user=root --password

输入root的密码(默认为root)最后运行:

ALTER USER 'username' IDENTIFIED WITH mysql_native_password BY 'password';

你都准备好了。

这里已经回答了这个问题:post

夏侯弘量
2023-03-14

我发现了一个修复在这里时,从docker-comment启动:

services:

  db:
    image: mysql
    command: mysqld --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

也就是说,在启动MySQL时从新的MySQL密码/授权机制恢复。

岳浩宕
2023-03-14

首先,请注意,您使用的是非稳定软件,因此在发布和意外行为之间可能会发生重大变化。

编辑:不再开发,稳定版于2018年4月19日发布

其次,你不能直接ping你的容器,它在另一个网络中,但你可以很容易地使用另一个容器ping他。

MySQL 8使用caching_sha2_password作为默认身份验证插件,而不是mysql_native_password。更多信息在这里。

许多mysql驱动程序还没有添加对caching_sha2_password的支持。

如果您遇到问题,可以使用以下内容更改为旧的身份验证插件:

docker run-p3306:3306——名称mysql\u 80-e mysql\u ROOT\u PASSWORD=PASSWORD-d mysql:8 mysqld——默认身份验证插件=mysql\u native\u PASSWORD

 类似资料:
  • null 我确信我已经在127.0.0.1:27017启动了数据库服务,并且可以用shell和非异步方法连接。错误: PrimaryServerSelector没有从群集描述中选择服务器ClusterDescription{type=unknown,connectionmode=single,all=[ServerDescription{address=localhost:27017,type=u

  • 我正在尝试使用rds部署带有MySQL引擎的rds实例。数据库子网组位于公用子网中。 我已执行以下检查:-允许安全组在端口3306上进行公共访问-在端口3306上的endpointURL上成功执行Telnet命令 配置如下: 日志记录详细信息: 正在尝试使用console连接到rds

  • 我试图连接到一个名为的数据库。所有凭据都位于PHP文件名中,格式为 我正试图用这个连接到数据库 我得到这个错误: 注意:第6行的未定义变量:DB_HOST in/home/content/06/8274306/html/beta/mysuperscript.php 注意:未定义变量:第6行 /home/content/06/8274306/html/beta/mysuperscript.phpDB

  • 试图连接一个简单的JMX监控。托管应用程序和监控工具位于同一台服务器上。当试图连接一个错误 00:30:55610致命http-8080-6 SiteListener:makeJmxConnection:99-java.io。IOException:检索RMIServer存根失败:javax.naming。ServiceUnavailableException[根异常为java.rmi.Conne

  • 我有一个 Spring 引导项目,其中我使用 spring-boot-starter-actuator 和 io.dropwizard.metrics。 它生成我可以使用 url http://myapplication/metrics 访问的指标。我将应用程序部署在 Wildfly 10 独立服务器上。 我想使用jmx读取jconsole上的指标。我将应用程序配置为使用JMXReporter发送

  • 我见过几个问题[1][2][3]有点类似于这一点,但没有一个答案产生任何成功。 所以,以下是我看到的问题: 1)pom表明它无法连接到本地。m2存储库。 6)用Java1.7而不是1.8启动Intellij 7)卸载和重新安装Maven、Java和Intellij 非常感谢任何帮助。