Mysql 如何使用“连接到k8s上的我的数据库”;“命令”;readinessProbe的说明?

Mysql 如何使用“连接到k8s上的我的数据库”;“命令”;readinessProbe的说明?,mysql,kubernetes,yaml,Mysql,Kubernetes,Yaml,朋友们,我在这里尝试实现一个readinessProbe,如下所示: readinessProbe: exec: command: ["mysql", "-u root", "-p $(MYSQL_ROOT_PASSWORD)", "SHOW DATABASES;"] initialDelaySeconds: 5 periodSeconds: 2 timeoutSeconds:

朋友们,我在这里尝试实现一个readinessProbe,如下所示:

readinessProbe:  
  exec:
    command: ["mysql", "-u root", "-p $(MYSQL_ROOT_PASSWORD)", "SHOW DATABASES;"]
    initialDelaySeconds: 5
    periodSeconds: 2
    timeoutSeconds: 1
readinessProbe:
   exec:
      command:
      - "bash" 
      - "-c"
      - "mysql --user=${MYSQL_USER} --password=${MYSQL_PASSWORD} --execute=\"SHOW DATABASES;\""
但我收到一个拒绝访问错误:错误1045(28000):拒绝用户“root”@“localhost”的访问(使用密码:YES)


当我在pod中执行时,我可以正常连接到数据库,因此我认为执行连接命令是做错了什么。你知道我该如何解决这个问题吗?

它对我来说是这样的:

readinessProbe:  
  exec:
    command: ["mysql", "-u root", "-p $(MYSQL_ROOT_PASSWORD)", "SHOW DATABASES;"]
    initialDelaySeconds: 5
    periodSeconds: 2
    timeoutSeconds: 1
readinessProbe:
   exec:
      command:
      - "bash" 
      - "-c"
      - "mysql --user=${MYSQL_USER} --password=${MYSQL_PASSWORD} --execute=\"SHOW DATABASES;\""

但如果我想使用括号,我仍然不知道如何“翻译”这个词。

它对我来说是这样的:

readinessProbe:  
  exec:
    command: ["mysql", "-u root", "-p $(MYSQL_ROOT_PASSWORD)", "SHOW DATABASES;"]
    initialDelaySeconds: 5
    periodSeconds: 2
    timeoutSeconds: 1
readinessProbe:
   exec:
      command:
      - "bash" 
      - "-c"
      - "mysql --user=${MYSQL_USER} --password=${MYSQL_PASSWORD} --execute=\"SHOW DATABASES;\""

但是,如果我想使用括号,我仍然不知道如何“翻译”它。

当您为
命令使用JSON数组语法:
和类似选项时,您可以精确地指定如何将命令拆分为“单词”。所以当选项说

命令:[……,“-u root”,…]
这是一个包含嵌入空间的单个选项(我可以大声说“dash u space root”)。在交互式shell中,它相当于引用选项
mysql'-u root'…

从您的错误消息中,它看起来像是
mysql
客户端工具将空格解释为用户名的一部分;你不会想要的。可以自己将其拆分为两个单独的选项,也可以删除选项和参数之间的空格

命令:[……,“-u”,“root”,…]
命令:[……,“-uroot”,…]

当您为
命令:
和类似选项使用JSON数组语法时,您可以精确地指定命令如何拆分为“字”。所以当选项说

命令:[……,“-u root”,…]
这是一个包含嵌入空间的单个选项(我可以大声说“dash u space root”)。在交互式shell中,它相当于引用选项
mysql'-u root'…

从您的错误消息中,它看起来像是
mysql
客户端工具将空格解释为用户名的一部分;你不会想要的。可以自己将其拆分为两个单独的选项,也可以删除选项和参数之间的空格

命令:[……,“-u”,“root”,…]
命令:[……,“-uroot”,…]

我猜要么
“-u”,“root”
需要是单独的选项,要么
“-uroot”
,因为一个选项不能有空格。(是否在错误消息中显示了
“root”
,并带有空格?)是的,David,在日志中确实显示了“root”。谢谢你的提示。仍在学习这些东西是如何工作的。谢谢!我猜要么是
“-u”,“root”
需要是单独的选项,要么是
“-uroot”
,因为一个选项不能有空格。(是否在错误消息中显示了
“root”
,并带有空格?)是的,David,在日志中确实显示了“root”。谢谢你的提示。仍在学习这些东西是如何工作的。谢谢!