【问题标题】:Access denied when running Mysql in Kubernetes在 Kubernetes 中运行 Mysql 时访问被拒绝
【发布时间】:2021-10-17 16:10:58
【问题描述】:

我是 Kubernetes 的新手。这是我的情况:
我在 Github 上找到了一个开源项目,它是一个在线书店:https://github.com/devdcores/BookStoreApp-Distributed-Application(无论如何,感谢这个 repo 的作者)。这个项目是用微服务架构编写的,它有一个 docker-compose 可以立即构建和运行容器。我试过了,它奏效了。 但是当我尝试在 Kubernetes 和 Helm 中构建和运行这个项目时,问题出现了:
某些服务无法连接到 mysqldb:拒绝访问用户 'bookstoreDBA'@'172.17.0.1'(使用密码:YES)。所以我查看了源代码并发现了这个:

datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://bookstore-mysql-db:3306/bookstore_db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    username: bookstoreDBA
    password: PaSSworD

我的问题是:url 设置正确吗?是问题的原因吗?如果是(不是),那么如何解决这个问题?
P/S:这些是mysql容器的环境变量和service.yaml

env:
    MYSQL_DATABASE: bookstore_db
    MYSQL_PASSWORD: PaSSworD
    MYSQL_ROOT_PASSWORD: r00tPaSSworD
    MYSQL_USER: bookstoreDBA

# service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.22.0 (955b78124)
  creationTimestamp: null
  labels:
    io.kompose.service: bookstore-mysql-db
  name: bookstore-mysql-db
spec:
  ports:
    - name: "3306"
      port: 3306
      targetPort: 3306
  selector:
    io.kompose.service: bookstore-mysql-db
status:
  loadBalancer: {}

【问题讨论】:

  • 您的用户名或密码不正确。
  • 这当然是一个奇怪的主机名,但我猜这可能与 Docker 有关(我不知道 Docker)尝试以 root 身份发出以下 MySql 命令> GRANT ALL ON bookstore_db.* TO 'bookstoreDBA'@'172.17.0.1' IDENTIFIED BY 'PaSSworD';

标签: java mysql docker kubernetes docker-compose


【解决方案1】:

我使用 mysql 客户端 创建bookstoreDBA 用户并授予所需权限。然后重启集群。现在一切正常。

【讨论】:

    猜你喜欢
    • 2015-07-31
    • 2018-07-22
    • 2020-03-17
    • 1970-01-01
    • 2023-03-07
    • 2013-11-25
    • 2017-11-01
    • 2023-02-14
    • 2018-08-31
    相关资源
    最近更新 更多