以下に示すように、ユーザー名とパスワードパラメータを含むabc.ymlファイルがあります。これらのパラメータをLinuxユーザーのenv変数に保存しましたが、アプリケーションがabc.ymlファイルを実行してもenv変数の値は印刷されません。環境変数のみを印刷します。
abc.yml:
type: MYSQL
host: localhost
port: 3307
username: '${user_mysql}'
password: '${pass_mysql}'
Linux端末環境変数の確認:
[arc@rnd-2 conn]$ echo ${user_mysql}
root
[arc@rnd-2 conn]$ echo ${pass_mysql}
notmypassword
abc.ymlファイルを実行したときのログ:
Caused by: java.sql.SQLInvalidAuthorizationSpecException: (conn=375) Access denied for user '${user_mysql}'@'localhost' (using password: YES)
Current charset is UTF-8. If password has been set using other charset, consider using option 'passwordCharacterEncoding'
ベストアンサー1
Java(?)プログラムが特定の外観を見て環境変数を見つける方法がわからない場合、${variable}
ローカルでは機能しません。
ただし、YAMLファイルを解析して変数の値を変更し、プログラムで処理されたYAMLファイルを使用するようにすることもできます。この問題を解決するのに役立つツールは次のとおりです。envsubst