У меня действительно простое приложение в dotnet core 2.1, которое взаимодействует с базой данных MySQL. Приложение использует Entity Framework следующим образом:
var connectionString = Configuration.GetConnectionString("DatabaseConnection");
services.AddDbContext<ChtrDbContext>(options => options.UseMySql(connectionString));
Где строка подключения выглядит так:
"DatabaseConnection": "Server=db;port=3306;Database=chtr;userid=dbuser;Password=dbuserpassword"
Приложение докеризировано, и я использую docker-compose up --build
для запуска среды.
Когда я перехожу к localhost: 8080 / graphql, который является моей конечной точкой GraphiQL, и я пытаюсь выполнить простой запрос к базе данных, я не могу войти в систему. Это файл журнала:
Access denied for user 'dbuser'@'172.19.0.3' (using password: YES)
chtr.server_1 | at MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 360
В нем говорится, что dbuser, который является настроенным пользователем, не имеет прав доступа к моей базе данных.
Запуск docker ps
, в котором перечислены все мои контейнеры. Я вижу, что контейнер mysql запущен. Затем я снова запускаю docker inspect chtrserver_db_1
, который является именем контейнера. Прокрутка вниз к разделу Config этого файла json дает мне следующее:
"Env": [
"MYSQL_RANDOM_ROOT_PASSWORD=1",
"MYSQL_DATABASE=chtr",
"MYSQL_USER=dbuser",
"MYSQL_PASSWORD=dbuserpassword",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.7",
"MYSQL_MAJOR=5.7",
"MYSQL_VERSION=5.7.26-1debian9"
],
Хорошо, я подтвердил, что Docker-контейнер работает и учетные данные, указанные в соединительной строке, совпадают с теми, которые настроены в контейнере. Почему я не могу войти?
Файл docker-compose.yml выглядит следующим образом:
версия: '3.0'
services:
db:
image: mysql:5.7
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_DATABASE: chtr
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbuserpassword
volumes:
- dbdata:/var/lib/mysql
- ./Scripts:/docker-entrypoint-Dataseed.d
restart: always
chtr.server:
depends_on:
- db
image: trebias/chtr.server
build:
context: .
ports:
- "8080:80"
volumes:
dbdata:
Любые предложения о том, как двигаться вперед?