用途
UnitTestの初期化、終了時に、コマンドラインからSQLをバッチ実行したい。
UnitTest中は、インターラクティブな入力ができないので、コマンドラインからパスワードも指定したい。
SQLは外部ファイル化したい。
コマンド
--passwords-from-stdin
オプションと--password=[password]
の両方を指定します。
$ mysqlsh --host=[host_name] --port=[port] --user=[user] --password=[password] --sql --passwords-from-stdin --file=[sql_file_path]
mysqlx: [Warning] Using a password on the command line interface can be insecure.
...
(SQL実行結果)
注意事項
コマンドラインの入力情報は、漏れる可能性があるので、テスト用アカウントを作成して実行すること。
備考
ファイルの指定は、--file
オプションの代わりにリダイレクトでも可能。
$ mysqlsh --host=[host_name] --port=[port] --user=[user] --password=[password] --sql --passwords-from-stdin < [sql_file_path]
コマンドラインに直接SQLを指定する場合は--execute
オプションを使う。
$ mysqlsh --host=[host_name] --port=[port] --user=[user] --password=[password] --sql --passwords-from-stdin --execute='[SQL]'
複数行のSQLだったら;
で区切って指定する。
$ mysqlsh --host=[host_name] --port=[port] --user=[user] --password=[password] --sql --passwords-from-stdin --execute='[SQL];[SQL];'
SSLで通信したい場合は、Amazonからパブリックキーを取得して(https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem)、--ssl-ca
オプションを指定します。
$ mysqlsh --host=[host_name] --port=[port] --user=[user] --password=[password] --sql --passwords-from-stdin --ssl-ca=[pem_file_path] --file=[sql_file_path]