使用jdbc时出现mysql连接错误

xn1cxnb4  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(352)

我有一个非常严重的问题,我不能继续我的任务两天。我使用docker和mysql服务器。我有docker-compose.yml文件,该文件:

version: '2'
services:
  mongoDb:
    image: mongo:latest
    container_name: myproject-mongodb
    ports:
      - "27017:27017"

  mssql:
    image: mysql/mysql-server:8.0
    container_name: myproject-mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 'pass'
      MYSQL_DATABASE: 'myproject'
      MYSQL_USER: 'myproject'
      MYSQL_PASSWORD: 'alex1234!'

正在成功创建docker映像。使用dbeaver客户机,我当然使用mysql驱动程序和确切的凭据来设置连接:server host:localhost port:3306 database:myproject user name:myproject password:'alex1234!'我还将驱动程序属性allowpublickeyretrieval中的设置为true,并建立了连接。现在在我的intellij in application.properties文件中,我有完全相同的东西:


# MySql WebMvcConfiguration.java

spring.datasource.url=jdbc:mysql://localhost:3306/myproject?allowPublicKeyRetrieval=true
spring.datasource.username=myproject
spring.datasource.password=alex1234!
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = true

当我运行应用程序时,我遇到了一个错误:

Authentication plugin 'caching_sha2_password' cannot be loaded

为什么会这样?我也试过一些解决办法 ALTER USER 'username'@'ip_address' IDENTIFIED WITH mysql_native_password By 'password'; 但什么都没有。请帮忙

j2qf4p5b

j2qf4p5b1#

在mysql 8.0中,缓存\u sha2\u密码是默认的身份验证插件,而不是mysql\u本地\u密码。有关此更改对服务器操作的影响以及服务器与客户端和连接器的兼容性的信息,请参阅将\u sha2 \u密码缓存为首选身份验证插件-https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-缓存-sha2-密码
您在docker images中使用mysql8,它有一个不同的身份验证实现。
请参见以下链接中的缓存\u sha2 \u密码更改
无法加载身份验证插件“caching\u sha2\u password”
https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html
所以暂时试着把mysql版本降到5.7。在旁注中,通过链接使用mysql-8的正确步骤。请看下面jdbc连接器的链接。https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password-compatible-connectors连接器

相关问题