当前位置: 首页 > 面试题库 >

使用Secrets输入密码时无法连接到Kubernetes中的mysql pod(拒绝访问)

张永嘉
2023-03-14
问题内容

我尝试在Kubernetes中设置一个mysql数据库。我配置了一个ConfigMap来存储数据库名称和一个Secret,其中包含根密码,用户和用户密码。

之后,当我尝试连接到数据库时(在mysql cli的容器内部以及IntelliJ
Database工具的外部),我得到一个“错误1045(28000):用户’testadm’@’localhost’的访问被拒绝(使用密码:是)”错误。

我的kubernetes.yaml文件:

apiVersion: v1
kind: ConfigMap
metadata:
  name: db
data:
  mysql-database: database

---
apiVersion: v1
kind: Secret
metadata:
   name: db-credentials
type: Opaque
data:
  mysql-root-password: VGVzdDEyMzQK # Test1234
  mysql-user: dGVzdGFkbQo= # testadm
  mysql-password: VGVzdDEyMzQK # Test1234

---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: mysql:5.7
          ports:
            - containerPort: 3306
          env:
            - name: MYSQL_DATABASE
              valueFrom:
                configMapKeyRef:
                  name: db
                  key: mysql-database
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: db-credentials
                  key: mysql-root-password
            - name: MYSQL_USER
              valueFrom:
                secretKeyRef:
                  name: db-credentials
                  key: mysql-user
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: db-credentials
                  key: mysql-password

如果我直接像下面那样设置密码,则连接成功 在容器内部和外部进行!

env:
  - name: MYSQL_ROOT_PASSWORD
    value: Test1234

如果检查容器内的env变量,则无法发现这两种方法之间的差异。

使用秘密中存储的密码是否需要其他格式?我还尝试将值放在数据字典中,如下所示:

data:
  mysql-root-password: "VGVzdDEyMzQK"

版本信息

Docker 17.06.0-ce
Minikube 0.21.0
Kubectl Server 1.7.0
Kubectl Client 1.7.3

问题答案:

您可以使用此yaml文件。

apiVersion: v1
kind: Secret
metadata:
   name: db-credentials
type: Opaque
data:
  mysql-password: VGVzdDEyMzQ=
  mysql-root-password: VGVzdDEyMzQ=
  mysql-user: dGVzdGFkbQ==


 类似资料:
  • 问题内容: 我让ELK堆栈在VM内的docker容器中运行。 我可以向ES填充,它可以在Kibana中显示。 我可以使用Logstash读取文件并将其输出到stdout。 但是Logstash无法将数据发送到ES (启用或禁用xpack似乎没有什么不同) 输出 之后,它会在“发送批量请求”,“执行运行状况检查”,“尝试复活”和“意外的池错误”之间保持循环。 随着每一次的同时,我也看到了 问题答案:

  • 这是我用来创建数据库的php脚本,我正在传递rootname=root和rootpass=toor 但我得到一个错误 警告:mysql_connect():第17行/var/www/webdefender/script/dbcreate.php中用户“root”@“localhost”(使用密码:否)的访问被拒绝无法连接:用户“root”@“localhost”的访问被拒绝(使用密码:否) 但是当

  • 我有一个用C#编写的应用程序,它确实与数据库连接。 下面是我得到的错误: 警告:mysql_connect()[function.mysql connect]:第15行(php文件)中用户“用户名”@“本地主机”(使用密码:是)的访问被拒绝无法连接:用户“用户名”@“本地主机”(使用密码:是)的访问被拒绝 这是我的密码: 我从以下方面得到了这个例子: http://php.net/manual/e

  • 我试图使用prometheus在kubernetes中进行监控,我们有一些指标存储在一个外部postgres数据库中,所以首先我想安装一个postgres导出器,我使用这个helm图表安装它:https://github.com/helm/charts/tree/master/stable/prometheus-postgres-exporter并用我的数据库信息填充values.yaml,安装后

  • 警告:mysqli::mysqli():(HY000/1045):拒绝访问/home/domainname/public_html/autopublish/test.php中的用户'usernam'@'localhost'(使用密码:YES)。第8行连接失败:拒绝访问用户'usernam'@'localhost'(使用密码:YES)

  • 我正在尝试连接到Gmail帐户(通过OAuth 2.0上的ruby Gmail gem、Gmail gem、Gmail_xoauth gem,但每个方法都使用imap.rb),并获得: c:/ruby 21-x64/lib/ruby/2 . 1 . 0/net/IMAP . Rb:1045:在“initialize”中:由于目标计算机主动拒绝连接,因此无法建立连接。-连接(2)用于“imap.gm