問題
MARIADB_ROOT_PASSWORD を Unix standard pass manager (pass) を介してパスワードを参照したいです。パスワードをファイルに記述したり、環境変数に設定せずに行う方法はないでしょうか?
エラー
- リモートで接続
$ mariadb -u root -p -P 43010 -h 127.0.0.1 Enter password: ERROR 1045 (28000): Access denied for user 'root'@'172.24.0.1' (using password: YES) db_1 | 2022-06-09 19:14:17 5 [Warning] Access denied for user 'root'@'172.24.0.1' (using password: YES)
- ローカルで接続
$ docker exec -it env_test_db_1 bash root@mariadb_env_test:/# mariadb -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) db_1 | 2022-06-09 19:16:08 6 [Warning] Access denied for user 'root'@'localhost' (using password: YES)
エラーコード
https://mariadb.com/kb/en/mariadb-error-codes/
試した事
.env ファイルから pass を起動してみましたが、正しいパスワードが設定できていませんでした。直接コンテナの中に入り、設定した mariadb のパスワードが使用できない事を確認しています。プロンプトが表われず master パスワードを尋ねてこないので、おそらく pass が正常に起動できていないと思います。
- 試したファイル (bash run.sh で実行できるはず)
./docker-compose.yml
version: '3' services: db: image: mariadb hostname: mariadb_env_test ports: - 43010:3306 environment: - MARIADB_ROOT_PASSWORD=${ROOT_PASSWD}
./.env
ROOT_PASSWD=$(pass docker/db/root) # 下記も試したがだめだった。 # ROOT_PASSWD=$(pass docker/db/root | xsel --clipboard)
./run.sh
#!/bin/bash function generate_pass_if_not_exist (){ user=$1 if [ ! -f ~/.password-store/docker/db/${user}.gpg ]; then pass generate docker/db/${user} fi } function pre_hook (){ users=($@) for user in ${users[@]}; do generate_pass_if_not_exist $user done } users=(root sample_user) pre_hook ${users[@]} docker-compose up
環境
$ cat /etc/os-release | grep VER VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye yosuke@localhost:~/Data/training
$ docker inspect env_test_db_1 | grep version "com.docker.compose.version": "1.25.0"
$ docker images | grep mariadb mariadb latest ea81af801379 2 days ago 383MB
ii pass 1.7.3-2 all lightweight directory-based password manager
あなたの回答
tips
プレビュー