これは、docker-compose によって作成されたコンテナーにいるときに表示されるものです。
mysql> SELECT user FROM mysql.user;
+------+
| user |
+------+
| root |
+------+
1 row in set (0.00 sec)
root@541e4d686184:/# echo $MYSQL_USER
dbuser
そのため、適切に設定されていても、 usersdbuser
テーブルには存在しません。$MYSQL_USER
私はこれdocker-compose.yml
を持っています:
version: '2'
services:
db:
image: mysql:latest
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: dbuser
MYSQL_PASSWORD: userpass
MYSQL_ROOT_PASSWORD: password
ports:
- "3306"
volumes:
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
- my-datavolume:/var/lib/mysql
volumes:
my-datavolume:
自動的に作成されると思っdbuser
ていましたが、そうはなりませんでした。
sql
データベースとテーブルがまだ存在しない場合は作成するためのファイルもありますが、現在、Tomcat はデータベースに接続できません。
この質問と同じ症状ですが、すでにユーザー名/パスワードに辞書を使用しています。
アップデート:
私は近づいています。コンテナ内で手動で行ったとき:
/docker-entrypoint-initdb.d/create_users.sh
次に、ユーザーがMySQL
テーブル内に作成され、アプリケーションをサーバーにデプロイできましたが、アクセスが拒否されtomcat
たことに関するエラーは発生しませんでした。dbuser
では、なぜこのコマンドを自分で実行する必要があったのでしょうか。mysql docker docsのInitializing a fresh instanceによると、docker-compose で実行する必要があります。