mariadb 如何在CodeBuild的buildspec.yaml中运行多行命令

gopyfrb3  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(98)

我需要使用本地用户名和密码在AWS CodeDeploy示例上设置MariaDB,以便我的Laravel应用程序可以连接到它并完成测试。
这个buildspec完成了我想实现的大部分功能:

version: 0.2

phases:
  install:
    runtime-versions:
      php: 8.2
    commands:
        - export DEBIAN_FRONTEND=noninteractive

        #Update
        - apt update -y

        #Start Mysql if you need it
        - apt install mariadb-server -y
        - service mariadb start

        #Install composer
        - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
        - php composer-setup.php ;
        - php -r "unlink('composer-setup.php');" ;
        - mv composer.phar /usr/local/bin/composer

  build:
    commands:
      - composer install

  post_build:
    commands:
      - php artisan test --recreate-databases

我正在努力添加用户。

我需要运行sudo mariadb

然后在打开的MariaDb提示符中运行:

CREATE USER 'ROOT'@'%' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

但是我不知道如何告诉构建规范在打开的mariadb终端中运行这些SQL命令,而不是在它默认的 shell 中运行。我试过引用,新的行,在build specification documentation中找不到任何提示。

r6l8ljro

r6l8ljro1#

我最终使用echo和管道操作符实现了这个功能:

#Start Mysql if you need it
        - apt install mariadb-server -y
        - service mariadb start
        - echo " CREATE DATABASE \`test\`;
          CREATE USER 'test'@'%' IDENTIFIED BY 'test';
          GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION;" | sudo mariadb

注意:对于这个项目,我需要特权来创建其他用户-您可能需要一个限制性更强的GRANT语句。

相关问题