【发布时间】:2016-08-25 10:14:24
【问题描述】:
我正在尝试在 Vagrant 配置期间执行一个脚本,该脚本在数据库上执行一些查询以允许从任何主机 root 登录,创建应用程序数据库并创建应用程序用户,如下所示:
#!/usr/bin/env bash
sudo bash << EOF
export DEBIAN_FRONTEND=noninteractive
MYSQL_ROOT_PASS='mySecretPass'
MYSQL_APP_PASS='appSecretPass'
mysql --user='root' --password='${MYSQL_ROOT_PASS}' <<QUERY
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASS}';
CREATE DATABASE appdb DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON apdb.* to 'appuser'@'%' IDENTIFIED BY '${MYSQL_APP_PASS}';
QUERY
EOF
但是当我在上面执行时,我得到了错误:
ERROR 1133 (42000) at line 1: Can't find any matching row in the user table
我不太明白转义现在在 bash 和 mysql 中是如何工作的。我一直在搞乱eval 而不是这里的文档,并且有些混淆了 " 和 ' 引号之间的转义。
【问题讨论】:
-
No SQL 文件不知道 bash 变量然后
标签: mysql bash escaping vagrant