Я использую 2 изображения докеров, одно с моим внутренним сервером nodeJS, другое с моей базой данных MySQL. В файле docker-compose я правильно определяю пароли, порты и имена хостов:
sql:
image: mysql:5.7.22
hostname: sql
ports:
- 3306:3306
secrets:
- db_root_pass
- db_user_pass
environment:
MYSQL_USER: user
MYSQL_PASSWORD_FILE: /run/secrets/db_user_pass
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_pass
provider:
image: monokilho/app:dev
hostname: provider
ports:
- 3000:3001
- 9221:9229
secrets:
- db_user_pass
command: node --inspect=0.0.0.0:9229 appModule.js
И в моем файле DB_config.js для NodeJS у меня есть такая настройка подключения:
db_config.host = 'sql';
db_config.port = '3306';
db_config.user = 'user';
db_config.password = fs.readFileSync('/run/secrets/db_user_pass', 'utf8');
db_config.database = 'app';
db_config.multipleStatements = true;
Проблема в том, что, хотя, используя эти точные конфигурации, докер прекрасно подключает Node к MySQL на моем локальном компьютере с Windows, когда я загружаю изображения на свой удаленный сервер Linux, я продолжаю получать:
Access denied for user 'user'@'8b2e56e566b2.network_default'
Я уже переделал секреты, попытался вручную добавить пароли в конфигурацию на NodeJS и ничего ... что делает его еще более странным, так это то, что если я перейду к контейнеру MySQL для прямого подключения или если я создам другой контейнер MySQL и удаленно подключусь он работает, поэтому я знаю, что ввод пароля в конфигурации MySQL правильный, и он принимает удаленные подключения.
Любое предложение, в чем может быть разница между окнами и Linux для такого поведения? Заранее спасибо.
PS: При необходимости windows 10, а дистрибутив linux ububtu 16.04.
Обновлено: в журналах mysql появляется ошибка отказа в доступе, поэтому докер nodejs может связаться с докером mysql, и сеть должна быть в порядке.
Извините, забыл указать в сообщении, что доступ запрещен, который я получаю, находится в журналах mysql, поэтому сеть работает нормально, и я могу связаться с сервером






По-видимому, конфигурация mysql игнорировала подлый \ n в файле паролей, позволяя ему нормально работать с подключением к командной строке, в то время как на nodejs это соединение было ошибочным.
Может быть проблема в том, что у вашего пользователя для приложения Node нет действительного разрешения для сети, созданной Docker? Просто идея ...