Mysql java.sql.SQLNonTransientConnectionException:在jhipster docker产品中,不允许为单片项目检索公钥
在运行docker up时,我得到了“java.sql.SQLNonTransientConnectionException:不允许检索公钥”。我使用的是jhipster单片工程。我已经尝试了“allowPublicKeyRetrieval=true”解决方案。如果我再次使用该解决方案,意味着我又会收到一个错误,如“拒绝用户“root”的访问@localhost”。请帮助我解决此问题解决这个错误。我从一周开始就遇到了同样的问题 这是我的.yo-rc.jsonMysql java.sql.SQLNonTransientConnectionException:在jhipster docker产品中,不允许为单片项目检索公钥,mysql,docker,angular6,jhipster,production,Mysql,Docker,Angular6,Jhipster,Production,在运行docker up时,我得到了“java.sql.SQLNonTransientConnectionException:不允许检索公钥”。我使用的是jhipster单片工程。我已经尝试了“allowPublicKeyRetrieval=true”解决方案。如果我再次使用该解决方案,意味着我又会收到一个错误,如“拒绝用户“root”的访问@localhost”。请帮助我解决此问题解决这个错误。我从一周开始就遇到了同样的问题 这是我的.yo-rc.json { "generator-jhip
{
"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": []
}
}
可能的原因:
您想使用db连接作为root用户,这是一个坏主意,因为root用户拥有访问所有数据库表的所有权限。在某些情况下,您希望将对数据库中特定资源的访问添加到应用程序中
您正在使用DB的无密码连接
可能的解决办法:
为数据库添加用户无根,例如在db shell中:
创建由“topsecret”标识的用户“apppuser”@“localhost”
创建由“topsecret”标识的用户“apppuser”@“%”
将dbname.*上的SELECT授予“apppuser”@“localhost”
将dbname.*上的INSERT授予'apppuser'@'localhost'
将dbname.*的更新授予'apppuser'@'localhost'
将dbname.*上的DELETE授予'apppuser'@'localhost'
将dbname.*上的SELECT授予“apppuser”@“%”
将dbname.*上的INSERT授予“apppuser”@“%”
将dbname.*上的更新授予“apppuser”@“%”
将dbname.*上的DELETE授予“apppuser”@“%”
然后更改docker compose凭据
和第一个有关。在docker compose文件路径中创建.env文件并添加属性:
DBUSER='apppuser'
DBPASSWORD='topsecret'
然后在docker compose文件中,将此变量添加为${DBUSER}和${DBPASSWORD}
与第二点有关。如果您在使用.env文件时遇到问题,并且正在使用linux系统,请以与.env文件相同的方式在/etc/environment中添加环境属性。请记住,您不能将属性用于,因为它将被视为注释
请发送docker compose文件和production.yml文件。我将此添加为注释,因为此错误似乎是由多种不同的原因造成的,每种原因都与开发人员的项目有关。我的问题源于开发人员将用户cred硬编码到DatabaseConfiguration.java类中,而不是使用从application-dev.yml传入的cred。我正在尝试升级一个非常旧的JHipster项目,因为我继承了代码,所以我不得不去探索。希望这有帮助!嘿@StackUser你解决问题了吗?我也有同样的问题,请分享解决方案!谢谢