【问题标题】:spring boot project can not access mysql db that is created by dockerspring boot项目无法访问docker创建的mysql db
【发布时间】:2021-06-10 04:22:18
【问题描述】:

我正在开发一个没有 docker 的 Spring boot 项目,我尝试连接一个 MYSQL 8 db。我通过 docker 创建了数据库。但是Spring boot项目无法访问mysql。有一个例外是“用户'root'@'172.21.0.1'的访问被拒绝(使用密码:YES)”。

但是我可以使用 mysql Workbench 访问它,并且可以访问 mysql 终端。

我尝试通过在 mysql 终端上运行这些命令来解决:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.21.0.1' WITH GRANT OPTION; 

我该如何继续并解决这个问题?

docker-compose.yml:

version: '3.1'

services:
  mysql:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 020688
      MYSQL_DATABASE: ticketdb
      MYSQL_PASSWORD: 020688
      MYSQL_USER: root
    ports:
      - '3306:3306' 

ticket-service.yml

spring:
  application:
    name: ticket-service
  datasource:
    url: jdbc:mysql://localhost:3306/ticketdb
    username: root
    password: 020688
  jpa:
    database: mysql
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    hibernate:
      ddl-auto: update 

例外:

Caused by: java.sql.SQLException: Access denied for user 'root'@'172.21.0.1' (using password: YES)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.18.jar:8.0.18]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.18.jar:8.0.18]


【问题讨论】:

  • 我不确定,但你有一个 mysql 容器已经在运行吗?也许这就是问题所在。在这里查看stackoverflow.com/a/59839180/10909386
  • 是的,它正在运行,我可以在终端和 mysql workbench GUI 中访问它。例外是关于特权。如果是关于主机连接失败,可能是关于是否运行。

标签: mysql spring-boot docker privileges sqlexception


【解决方案1】:

在您的 SQL GRANT 中,您创建了一个主机为 127.21.0.1 的用户,但您的应用似乎在 172.21.0.1 上运行

这可能是问题中的错误类型。

【讨论】:

  • 您好,非常感谢。我根据您的评论修复了它,它有效
  • 您好,您应该将该问题标记为已解决。正确的答案是 phaen 的答案,我想这个错误是后来打错的
【解决方案2】:

您正在尝试以我假设的另一台主机的 root 用户身份连接(因为这就是它的样子)。默认情况下,mysql 不允许这样做 (afaik)。

也许看看这篇文章,可能会解决你的问题:

mysql-root-access-from-all-hosts

【讨论】:

  • 嗨,我阅读了那篇文章,并添加了一个具有所有权限的新用户 'root'@'172.21.0.1'。并且具有所有特权的'root@'%' 已经存在。再次出现同样的错误
猜你喜欢
  • 2021-01-14
  • 2020-01-08
  • 2017-04-25
  • 2022-01-25
  • 2017-03-05
  • 2017-08-11
  • 2021-04-16
  • 2020-07-12
  • 1970-01-01
相关资源
最近更新 更多