我尝试在 kubernetes 中运行 mysql 5.7 并收到此错误
mysql: unknown option '--"'
我的database.yaml看起来像这样
apiVersion: v1
kind: Pod
metadata:
name: app-db
labels:
app: app-db
spec:
containers:
- name: mysql
image: mysql:5.7
ports:
- name: mysql-port
containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: app-secrets
key: rootPassword
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: app-secrets
key: username
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: app-secrets
key: password
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: app-secrets
key: defaultDatabase
Run Code Online (Sandbox Code Playgroud)
也许我错过了什么?
我尝试切换版本,尝试使用 Kubernetes 官方网站上的示例 - 对我来说没有任何作用。
最后的日志有错误:
2020-07-19 20:51:01 100 [Note] Event Scheduler: Loaded 0 events
2020-07-19 20:51:01 100 [Note] mysqld: ready for connections.
Version: '5.6.49' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server (GPL)
2020-07-19 20:51:01+00:00 [Note] [Entrypoint]: Temporary server started.
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
2020-07-19 20:51:04 100 [Warning] 'proxies_priv' entry '@ root@app-db' ignored in --skip-name-resolve mode.
2020-07-19 20:51:04+00:00 [Note] [Entrypoint]: Creating database app_db
mysql: unknown option '--"'
Run Code Online (Sandbox Code Playgroud)
Tom*_*ger 15
我遇到了同样的问题,经过大量令人沮丧的调试后,我终于解决了它。
\n问题是我使用该echo 'secret' | base64命令创建了我的秘密,而 echo 命令会自动插入尾随换行符。
echo -n 'secret' | base64代替使用。\xe2\x9c\x94\xef\xb8\x8f
不幸的是,这根本不是我所期望的,因此我没有注意到日志输出中有换行符。希望这可以帮助一些也使用 echo 命令编码为 Base64 的人。
\n我查看了entrypont.sh这个容器的脚本。错误发生在“创建数据库”部分:
# Creates a custom database and user if specified\nif [ -n "$MYSQL_DATABASE" ]; then\n mysql_note "Creating database ${MYSQL_DATABASE}" \n docker_process_sql --database=mysql <<<"CREATE DATABASE IF NOT EXISTS \\`$MYSQL_DATABASE\\` ;" \nfi\n\nif [ -n "$MYSQL_USER" ] && [ -n "$MYSQL_PASSWORD" ]; then\n mysql_note "Creating user ${MYSQL_USER}"\n...\nRun Code Online (Sandbox Code Playgroud)\ndocker_process_sql() {\n passfileArgs=()\n if [ \'--dont-use-mysql-root-password\' = "$1" ]; then\n passfileArgs+=( "$1" )\n shift\n fi\n # args sent in can override this db, since they will be later in the command\n if [ -n "$MYSQL_DATABASE" ]; then\n set -- --database="$MYSQL_DATABASE" "$@"\n fi\n\n mysql --defaults-extra-file=<( _mysql_passfile "${passfileArgs[@]}") --protocol=socket -uroot -hlocalhost --socket="${SOCKET}" "$@"\n}\nRun Code Online (Sandbox Code Playgroud)\n我还用普通的 docker 进行了测试,它可以正常工作:
\ndocker run --name some-mysql -d -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE="app" -e MYSQL_USER="user1" mysql:5.7\nRun Code Online (Sandbox Code Playgroud)\n所以你的秘密很可能被破坏了。
\n\xe2\x9c\x8c\xef\xb8\x8f
\n| 归档时间: |
|
| 查看次数: |
2271 次 |
| 最近记录: |