我想在连接到gcloud SQL实例时,在单个语句中传递密码和用户id。我该怎么做?我尝试了几种组合,但没有找到任何解决方案。
例如:
gcloud sql connect scegold2-f44e-mysql --user=username --password=password --quiet
显示密码错误。
我可以得到任何帮助和指导。我做错什么了吗?
expect
程序可用于将每个参数一次传递给gcloud sql connect
,包括密码,例如使用以下autoconnect.exp
脚本:
#!/usr/bin/expect -f
# Call command with "expect autoconnect.exp $INSTANCE $USER $PASSWORD",
# or place the arguments literally in the script, where the variables are.
set INSTANCE [lindex $argv 0]
set USER [lindex $argv 1]
set PASSWORD [lindex $argv 2]
set timeout -1
spawn gcloud sql connect $INSTANCE --user=$USER
expect "*Password*"
send -- "$PASSWORDr"
expect eof
这样做的目的是等待gcloud
命令提示输入密码(expect "*Password*"
的意思是等待包含"密码">的行(,然后向其输入密码,然后数据库管理系统正常打开。
这里有一个很好的expect
指南。
如文档中所述,"gcloud sql connect"
命令的标志为:
--user=USER, -u USER
基于此,您不能在同一命令行中指定密码,即使您通过指定"无密码"创建实例,它也会要求您输入密码(在这种情况下,您只应按enter键(。