首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用环境变量执行MySQL init命令以创建数据库

使用环境变量执行MySQL init命令以创建数据库
EN

Stack Overflow用户
提问于 2018-05-18 01:42:57
回答 2查看 1.9K关注 0票数 2

我正在尝试创建一个数据库,如果数据库不存在,并设置privledges,但是我很难让它工作,我一直在获取You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci' at line 1

我已经包括了执行命令的各种方法

Yaml:

代码语言:javascript
复制
  initContainers:
  - name: database-setup
    image: mysql:5.7
    imagePullPolicy: IfNotPresent
    # command:  ["rm", "-fr", "/var/lib/mysql/lost+found"]
    # SQL Syntax error:
    command: [sh,-c,mysql -h mysql-service -p$MYSQL_ROOT_PASSWORD -e "CREATE DATABASE IF NOT EXISTS `$WORDPRESS_DB_NAME` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON $WORDPRESS_DB_NAME.* TO '$WORDPRESS_DB_USER'@'%' IDENTIFIED BY '$WORDPRESS_DB_PASSWORD'; FLUSH PRIVILEGES;"]

      # Enviroment Variables arn't passed into mysql shell:
      # - sh
      # - -c
      # - mysql -h mysql-service -p$MYSQL_ROT_PASSWORD
      # - CREATE DATABASE IF NOT EXISTS $WORDPRESS_DB_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      # - GRANT ALL PRIVILEGES ON $WORDPRESS_DB_NAME.* TO '$WORDPRESS_DB_USER'@'%' IDENTIFIED BY '$WORDPRESS_DB_PASSWORD';
      # - FLUSH PRIVILEGES;
      # - EXIT;

      # SQL Syntax error:
      # - sh
      # - -c
      # - mysql -h mysql-service -p$MYSQL_ROOT_PASSWORD -e "CREATE DATABASE IF NOT EXISTS `$WORDPRESS_DB_NAME` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON $WORDPRESS_DB_NAME.* TO '$WORDPRESS_DB_USER'@'%' IDENTIFIED BY '$WORDPRESS_DB_PASSWORD'; FLUSH PRIVILEGES;

    env:
    - name: WORDPRESS_DB_NAME
      value: wordpress-green
    - name: WORDPRESS_DB_USER
      value: wordpress-green
    - name: WORDPRESS_DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: wordpress-mysql-pass
          key: wordpress-mysql-pass
    - name: MYSQL_ROOT_PASSWORD
      valueFrom:
        secretKeyRef:
          name: mysql-root-pass
          key: mysql-root-pass
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-18 02:24:07

尝试为echo行执行一个MySQL来调试返回的变量:

代码语言:javascript
复制
mysql -h mysql-service -p\\REDACTED\\ -e CREATE DATABASE IF NOT EXISTS DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON wordpress-green.* TO 'wordpress-green'@'%' IDENTIFIED BY '\\REDACTED\\'; FLUSH PRIVILEGES;

我通过删除$WORDPRESS_DB_NAME修复了未传递给create的 -这再次导致语法错误,因为它不喜欢数据库名中的破折号。相反,我只是使用camelCase作为数据库名称

谢谢你的帮助提姆·比格莱森

票数 0
EN

Stack Overflow用户

发布于 2022-11-11 09:29:02

我遇到了同样的问题,但我希望在数据库名称中使用连字符(因为这是Kubernetes资源命名的有效语法)。这就是对我起作用的东西

代码语言:javascript
复制
        command:
        - /bin/sh
        - -c
        - mysql --host=$MYSQL_HOST --port=$MYSQL_PORT --user=$MYSQL_USER --password=$MYSQL_PWD
          --execute="CREATE DATABASE IF NOT EXISTS \"$WORDPRESS_DB_NAME\";"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50402654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档