mysql:Kubernetes 中的未知选项“--”

Squ*_*eez 6 mysql kubernetes

我尝试在 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 命令会自动插入尾随换行符。

\n

echo -n 'secret' | base64代替使用。\xe2\x9c\x94\xef\xb8\x8f

\n

不幸的是,这根本不是我所期望的,因此我没有注意到日志输出中有换行符。希望这可以帮助一些也使用 echo 命令编码为 Base64 的人。

\n

  • 对我来说也是如此。太感谢了。我快要疯了,因为我遇到了多个图像和标签的问题。 (2认同)

Ric*_*ico 1

我查看了entrypont.sh这个容器的脚本。错误发生在“创建数据库”部分:

\n
# 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...\n
Run Code Online (Sandbox Code Playgroud)\n
docker_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}\n
Run Code Online (Sandbox Code Playgroud)\n

我还用普通的 docker 进行了测试,它可以正常工作:

\n
docker run --name some-mysql -d -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE="app" -e MYSQL_USER="user1" mysql:5.7\n
Run Code Online (Sandbox Code Playgroud)\n

所以你的秘密很可能被破坏了。

\n

\xe2\x9c\x8c\xef\xb8\x8f

\n