java. sql .SQLNonTransientConnectionException: Publi c Получение ключа не разрешено в производстве jhipster docker для проекта monolithi c - PullRequest
1 голос
/ 13 февраля 2020

во время работы docker вверх я получаю 'java. sql .SQLNonTransientConnectionException: Publi c Поиск ключей не разрешен ". Я использую проект jhipster monolithi c, и я уже пробовал" allowPublicKeyRetrieval = true 'решение. Если я снова использую это средство, я получаю еще одну ошибку, например' Доступ запрещен для пользователя '* 10101 *'@'localhost'.

вот мой .yo-r c. json

{
 "generator-jhipster": {
"promptValues": {
  "packageName": "com.niche.ng",
  "nativeLanguage": "en"
},
"jhipsterVersion": "6.5.0",
"applicationType": "monolith",
"baseName": "Nichehands",
"packageName": "com.niche.ng",
"packageFolder": "com/niche/ng",
"serverPort": "8080",
"authenticationType": "session",
"cacheProvider": "ehcache",
"enableHibernateCache": false,
"websocket": false,
"databaseType": "sql",
"devDatabaseType": "mysql",
"prodDatabaseType": "mysql",
"searchEngine": false,
"messageBroker": false,
"serviceDiscoveryType": false,
"buildTool": "maven",
"enableSwaggerCodegen": false,
"rememberMeKey": "b9f603400b9bd1cf887c6efbba0e8e3822cf735d083441758e81667adef95db8af19462970cfece6048f0be25cc",
"embeddableLaunchScript": false,
"useSass": true,
"clientPackageManager": "npm",
"clientFramework": "angularX",
"clientTheme": "none",
"clientThemeVariant": "",
"testFrameworks": [],
"jhiPrefix": "jhi",
"entitySuffix": "",
"dtoSuffix": "DTO",
"otherModules": [],
"enableTranslation": true,
"nativeLanguage": "en",
"languages": [
  "en",
  "hi",
  "ta",
  "te"
],
"blueprints": []
}
}

1 Ответ

0 голосов
/ 05 марта 2020

Возможные причины:

  • Вы хотите использовать соединение db как root пользователь, что является плохой идеей, поскольку root имеет доступ ко всем таблицам базы данных со всеми привилегиями. В некоторых случаях вы хотите добавить доступ к указанным c ресурсам в дБ в ваше приложение.

  • Вы используете соединение без пароля для БД

Возможные решения:

  1. Добавить пользователя для базы данных (без root), например, в вашей оболочке db:

    CREATE USER 'apppuser'@'localhost' IDENTIFIED BY 'topsecret';

    CREATE USER 'apppuser'@'%' IDENTIFIED BY 'topsecret';

    GRANT SELECT ON dbname.* to 'apppuser'@'localhost';

    GRANT INSERT ON dbname.* to 'apppuser'@'localhost';

    GRANT UPDATE ON dbname.* to 'apppuser'@'localhost';

    GRANT DELETE ON dbname.* to 'apppuser'@'localhost';

    GRANT SELECT ON dbname.* to 'apppuser'@'%';

    GRANT INSERT ON dbname.* to 'apppuser'@'%';

    GRANT UPDATE ON dbname.* to 'apppuser'@'%';

    GRANT DELETE ON dbname.* to 'apppuser'@'%';

    Затем измените свои docker составные учетные данные

  2. Относится к первому. Создайте файл .env в docker -составьте путь к файлу и добавьте свойства:

    DBUSER='apppuser'

    DBPASSWORD='topsecret'

    Затем в свой docker -составьте файл добавить эту переменную как ${DBUSER} and ${DBPASSWORD}.

  3. Относится ко второй точке. Если у вас проблемы с файлом .env и вы используете систему linux, добавьте ваши свойства environemnt в /etc/environment так же, как в файле .env. Помните, что вы не можете использовать свойства с «#», потому что они будут рассматриваться как комментарий.

Пожалуйста, отправьте docker -композитный файл и файл production.yml.

...