使用jdbc的Mysql连接错误

时间:2018-06-06 05:10:16

标签: mysql docker database-connection jdbctemplate

我有一个非常严重的问题,我无法继续我的任务两天知道。我使用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!'

正在成功创建泊坞窗图像。使用dbeaver客户端我当然使用mysql驱动程序和确切的凭据设置连接: 服务器主机:localhost 港口:3306 数据库:myproject 用户名:myproject 密码:'alex1234!' 另外,我将驱动程序属性中的allowPublicKeyRetrieval设置为true,并建立连接。 现在在application.properties文件的intellij中,我有完全相同的东西:

#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'; 但没什么。请帮忙

1 个答案:

答案 0 :(得分:2)

在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是mysql_native_password。有关此更改对服务器操作的影响以及服务器与客户端和连接器的兼容性的信息,请参阅caching_sha2_password作为首选身份验证插件 - https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

您在docker镜像中使用mysql8,它具有不同的身份验证实现。

请参阅以下链接中的caching_sha2_password更改

因此暂时尝试将mysql版本降级到5.7。 并在旁边注意通过链接使用mysql-8的正确步骤。看一下jdbc-connector的以下链接。 https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password-compatible-connectors