关于kubectl创建Secret及MySQL客户端连接的密码格式疑问
关于Kubectl Secret与MySQL客户端命令的问题解答
1. kubectl create secret创建的密码类型
kubectl create secret generic通过--from-literal创建的Secret值本质都是字符串类型。Kubernetes Secret存储的所有数据都会被转换成base64编码的字符串,不管输入的是数字还是带引号的内容,最终都会被当作字符串处理。
2. 创建Secret时的密码格式选择
执行kubectl create secret generic mysql-secret --from-literal MYSQL_KEY=11111时,两种格式("11111"或11111)都可以,但实际效果一致:
- 直接写
11111:Shell会将其当作字符串传递给kubectl,最终存储的是字符串"11111"。 - 加引号
"11111":主要用于避免Shell对特殊字符(比如空格、$、*这类)进行解析,此处数字无特殊字符,加不加引号结果相同;若密码包含特殊字符,则必须用引号包裹。
3. 正确的MySQL客户端kubectl命令
正确的命令是:
kubectl run -it --rm --image=mysql:8.0 --restart=Never mysql-client -- mysql -h mysql -password=11111
原因是:当使用-password="11111"时,部分Shell会把引号当作密码的一部分传递给MySQL客户端,导致密码验证失败(MySQL会尝试用包含引号的"11111"作为密码);直接写-password=11111时,Shell会将11111作为纯字符串传递,符合MySQL客户端的参数要求。
内容的提问来源于stack exchange,提问作者best_of_man
相关产品推荐
相关产品推荐

