AWS EC2インスタンスから返されたメタデータを取得し、このデータに基づいて新しいmysqlパスワードを設定したいと思います。
初めて起動するときに実行されるスクリプトの助けが必要です。
#!/bin/bash
output=$(ec2metadata --instance-id); Used for storing EC2 ID.
mysql -u root -pOldPassword
UPDATE mysql.user
次に、インスタンスIDを渡し、それを使用してmysqlルートの新しいパスワードを設定します。
SET authentication_string = PASSWORD('$output'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
EXIT
答え1
Bashは一重引用符で囲まれた変数を拡張しません。これに加えて、複数のSQLクエリを実行できます。必要に応じて、次のコマンドを使用して単一のSQLクエリを実行できます。<<EOF...EOF
立ててください。次のコードは私のために働いた
#!/bin/bash
newpass="newPassword"
mysql -u root -poldPassword <<EOF
UPDATE mysql.user SET Password=PASSWORD("$newpass") WHERE User='root';
FLUSH PRIVILEGES;
QUIT
EOF
UPDATE
MySQLのバージョンに応じて正しいコマンドを実行できます。使っています5.6.35。 MySQLを実行している場合5.7UPDATE
上記のクエリの代わりに次のクエリを使用してください。
UPDATE mysql.user SET authentication_string=PASSWORD("$newpass") WHERE User='root';
公式のMySQLドキュメントで詳細を見ることができます。 https://dev.mysql.com/doc/refman/5.7/en/update.html