1行に同じ名前でユーザーとデータベースを作成します。

1行に同じ名前でユーザーとデータベースを作成します。

以下は、Bashで直接MySQL認証されたすべての権限を持つデータベースユーザーと同じ名前の対応するデータベースインスタンスを作成する方法です。

echo "CREATE USER "${domain}"@"localhost" IDENTIFIED BY \"${dbup}\";" | mysql -u root -p"${dbrp}"
echo "CREATE DATABASE ${domain};" | mysql -u root -p"${dbrp}"
echo "GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;" | mysql -u root -p"${dbrp}"

最初の2つのコマンドを何らかの方法で1つのコマンドに結合できますか?

ベストアンサー1

別名「ここにドキュメント」を使用します。トレドック。たとえば、

cat <<EOF | mysql -u root -p"${dbrp}"
CREATE USER '${domain}'@localhost IDENTIFIED BY '${dbup}';
CREATE DATABASE '${domain}';
GRANT ALL PRIVILEGES ON ${domain}.* TO '${domain}'@localhost;
EOF

残念ながら、mysqlCREATE USER、CREATE DATABASE、GRANTなどのロールバックはまだサポートされていません。暗黙のコミットDDL操作の場合)そうでなければ、これらすべてのコマンドをトランザクションにラップする必要があると言いたいのですが(1つが失敗した場合はすべて失敗し、すべてが元の状態に戻ります)。

おすすめ記事