当 运行 根脚本包含 mysql 时,mysql 查询输出 mysql 使用信息

When running a script as root including mysql the mysql query outputs the mysql Usage info

我的 cronjob 应该执行带有 mysql 查询的脚本

如果我查看 cronjob 的日志,我会看到 mysql 帮助命令的输出 我希望从 table 中看到 2 个 table 类型为 view

的名称

USERNAMEPASSWORDHOSTNAME是环境变量

我的第一个问题是:root 在 echo $USERNAME 上获得的结果是否可能与其他用户不同?

#!/bin/sh

DBNAME="my_db"

# get all table names that are type of view
query="SHOW FULL TABLES IN $DBNAME WHERE TABLE_TYPE LIKE 'VIEW';"
views=$(mysql -sN -u"$USERNAME" -p"$PASSWORD" -h"$HOSTNAME" -e "$query" "$DBNAME")
echo "$views"

我得到的输出是:

mysql Copyright Oracle affiliates. owners. Usage: -?, -I, --auto-rehash 'rehash' and --disable-auto-rehash. (Defaults -A, No table mysql --auto-vertical-output Automatically result -B, (Enables --binary-as-hex --character-sets-dir=name Directory --column-type-info -c, default with -C, -#, --debug-check -T, -D, --default-character-set=name Set --delimiter=name --enable-cleartext-plugin Enable/disable -e, file.) -E, -f, -G, Enable internal named otherwise Disable disabled -i, --init-command=name Will --local-infile -b, -h, -H, -X, --line-numbers (Defaults -L, Don't -n, --column-names (Defaults -N, Don't --sigint-ignore -o, default --pager[=name] option, PAGER. etc. work option -p, Password not -P, order /etc/services, --prompt=name --protocol=name memory). -q, down history -r, --reconnect --disable-reconnect. (Defaults -s, each -S, --ssl other --ssl-ca=name --ssl). --ssl-capath=name --ssl-cert=name --ssl-cipher=name --ssl-key=name --ssl-verify-server-cert Verify hostname default. --ssl-mode=name -t, --tee=name also. --disable-tee. -u, -U, -U, -v, -V, -w, --connect-timeout=# --max-allowed-packet=# The server. --net-buffer-length=# The --select-limit=# --max-join-size=# --safe-updates. --secure-auth (pre-4.1.1) --server-arg=name --show-warnings --plugin-dir=name --default-auth=name Default /etc/mysql/my.cnf The The --print-defaults --no-defaults --defaults-file=# --defaults-extra-file=# Variables and --------------------------------- auto-rehash auto-vertical-output binary-as-hex character-sets-dir column-type-info comments compress debug-check debug-info database default-character-set delimiter enable-cleartext-plugin vertical force named-commands ignore-spaces init-command local-infile no-beep host html xml line-numbers unbuffered column-names sigint-ignore port prompt quick raw reconnect socket ssl ssl-ca ssl-capath ssl-cert ssl-cipher ssl-key ssl-verify-server-cert table user safe-updates i-am-a-dummy connect-timeout max-allowed-packet net-buffer-length select-limit max-join-size secure-auth show-warnings plugin-dir default-auth

有人可以帮忙找出问题吗?

编辑: 我发现,如果我在脚本中使用它们并且 运行 它作为 root.

,环境变量是空的

此问题的解决方案是在脚本顶部添加以下行:

. /opt/elasticbeanstalk/support/envvars

如果您使用 AWS Elastic Beanstalk 并希望在从 /etc/cron.d/.

中的 cronjob 文件触发的脚本中提供环境变量,则这是必需的