spring 引导项目无法访问由 docker 创建的 mysql 数据库
spring boot project can not access mysql db that is created by docker
我正在开发一个没有 docker 的 Spring 引导项目,我尝试连接一个 MYSQL 8 db。我通过 docker 创建了数据库。但是Spring引导项目无法访问mysql。有一个例外,“用户 'root'@'172.21.0.1'(使用密码:YES)拒绝访问”。
但是我可以使用 mysql Workbench 访问它,并且我可以访问 mysql 终端。
我尝试通过 运行 解决 mysql 终端上的这些命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.21.0.1' WITH GRANT OPTION;
我该如何继续解决这个问题?
docker-compose.yml:
version: '3.1'
services:
mysql:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 020688
MYSQL_DATABASE: ticketdb
MYSQL_PASSWORD: 020688
MYSQL_USER: root
ports:
- '3306:3306'
票-service.yml
spring:
application:
name: ticket-service
datasource:
url: jdbc:mysql://localhost:3306/ticketdb
username: root
password: 020688
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
hibernate:
ddl-auto: update
异常:
Caused by: java.sql.SQLException: Access denied for user 'root'@'172.21.0.1' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.18.jar:8.0.18]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.18.jar:8.0.18]
您正在尝试以 root 用户身份从我假设的另一台主机进行连接(因为它看起来像这样)。默认情况下,mysql 不允许这样做(afaik)。
也许看看这个 post,可能会解决您的问题:
mysql-root-access-from-all-hosts
在您的 SQL GRANT 中,您创建了一个主机为 127.21.0.1 的用户,但您的应用程序似乎 运行 位于 172.21.0.1
虽然问题可能打错了。
我正在开发一个没有 docker 的 Spring 引导项目,我尝试连接一个 MYSQL 8 db。我通过 docker 创建了数据库。但是Spring引导项目无法访问mysql。有一个例外,“用户 'root'@'172.21.0.1'(使用密码:YES)拒绝访问”。
但是我可以使用 mysql Workbench 访问它,并且我可以访问 mysql 终端。
我尝试通过 运行 解决 mysql 终端上的这些命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.21.0.1' WITH GRANT OPTION;
我该如何继续解决这个问题?
docker-compose.yml:
version: '3.1'
services:
mysql:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 020688
MYSQL_DATABASE: ticketdb
MYSQL_PASSWORD: 020688
MYSQL_USER: root
ports:
- '3306:3306'
票-service.yml
spring:
application:
name: ticket-service
datasource:
url: jdbc:mysql://localhost:3306/ticketdb
username: root
password: 020688
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
hibernate:
ddl-auto: update
异常:
Caused by: java.sql.SQLException: Access denied for user 'root'@'172.21.0.1' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.18.jar:8.0.18]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.18.jar:8.0.18]
您正在尝试以 root 用户身份从我假设的另一台主机进行连接(因为它看起来像这样)。默认情况下,mysql 不允许这样做(afaik)。
也许看看这个 post,可能会解决您的问题:
mysql-root-access-from-all-hosts
在您的 SQL GRANT 中,您创建了一个主机为 127.21.0.1 的用户,但您的应用程序似乎 运行 位于 172.21.0.1
虽然问题可能打错了。