Spring 引导中完成的项目未访问数据库
Database is not accessing by the project done in Spring Boot
我是 spring 引导的新手,我想将我的数据库与 jdbc 连接到 spring 引导项目。它仅对一个数据库成功,当我将数据库名称更改为另一个数据库时,它将不起作用。在我的项目中,我只完成了将数据库连接到 spring 引导。所以我认为它应该在数据库名称更改时起作用。如果有人能帮助我解决我的问题,我将不胜感激。
错误
Access denied for user ''@'localhost' to database 'daddycoffeeshop_db'.
and
Error creating bean with name 'jdbcConverter' defined in class path resource
application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/daddycoffeeshop_db
spring.datasource.username=root
spring.datasource.password=
此处 daddycoffeeshop_db 不工作,但 test 数据库正在工作。为什么会这样?
其他代码...
DaddyCoffeeShoApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DaddyCoffeeeShopApplication {
public static void main(String[] args) {
SpringApplication.run(DaddyCoffeeeShopApplication.class, args);
}
}
TestData.java
package com.example.demo;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@Component
public class TestData implements CommandLineRunner {
@Autowired
private JdbcTemplate jt;
@Autowired
private DataSource ds;
@Override
public void run(String... args) throws Exception {
String sql = "INSERT INTO RODUCT_DETAILS VALUES(?,?,?,?)" ;
int count = jt.update(sql, 10, "A", 234.45,"this is babysoap");
System.out.print("Inserted Rows" + count);
}
}
我觉得你的问题是权限。
请将 'daddycopeeshop_db' 的数据库角色委派给新帐户而不是根帐户。
您还需要开放与外界的联系。
请尝试以下操作:
将 . 上的所有权限授予 'user'@'localhost' WITH GRANT OPTION;
这也可以用 MySQL workbench 来完成。
按照下面提到的解决步骤进行操作,其中一个可能会解决您的问题:
解决方案 1:
第一个选项是使用下面的命令尝试使用用户名和正确的密码登录。此命令将提示您输入密码。输入正确的密码。 Mysql 将验证用户名和密码。如果两者都与现有系统匹配,则 mysql 将允许登录。由于密码无效,抛出“Access denied for user 'root'@'localhost'”错误。
$>mysql -u root -p Enter password:
解决方案 2:
如果您忘记了root用户,以下步骤将帮助您更新root密码。将使用提供的密码在 PASSWORD() 函数中修改 root 用户。下例中密码设置为“password”。此步骤将允许重置 root 用户密码。
$> mysqld --skip-grant-tables
$> mysql -u root mysql
mysql> update mysql.user set password=PASSWORD("password") where User='root';
mysql> flush privileges;
解决方案 3:
默认情况下,root 用户不会附加插件。使用插件“mysql native password”更新 root 用户此插件“mysql native password”允许本机身份验证。对于任何命令,如果 mysql 本机密码插件未设置为 root 用户,则会显示错误“用户‘root’@‘localhost’的访问被拒绝”。
$> mysqld --skip-grant-tables
$> mysql -u root mysql
mysql> update mysql.user set plugin = 'mysql_native_password' where User='root';
mysql> flush privileges;
$> mysql -u root mysql
mysql> update mysql.user set password=PASSWORD("password") where User='root';
mysql> flush privileges;
解决方案 4:
必须更改root用户和插件的密码。 alter 命令将更改 root 用户的密码并将插件更新为“mysql native password”。该插件以本机格式存储密码并允许本机身份验证。
$> mysqld --skip-grant-tables
$> mysql -u root mysql
mysql> ALTER mysql.user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> exit
start mysql again
解决方案 5:
根用户拥有管理员权限。为 root 用户提供从本地系统连接的所有权限。 grant 命令会将权限添加到 root 命令。如果您想恢复特权,请使用“撤销”命令。 “撤销”命令将删除用户的权限。
mysql> CREATE USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
or
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
mysql> FLUSH PRIVILEGES;
我是 spring 引导的新手,我想将我的数据库与 jdbc 连接到 spring 引导项目。它仅对一个数据库成功,当我将数据库名称更改为另一个数据库时,它将不起作用。在我的项目中,我只完成了将数据库连接到 spring 引导。所以我认为它应该在数据库名称更改时起作用。如果有人能帮助我解决我的问题,我将不胜感激。
错误
Access denied for user ''@'localhost' to database 'daddycoffeeshop_db'.
and
Error creating bean with name 'jdbcConverter' defined in class path resource
application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/daddycoffeeshop_db
spring.datasource.username=root
spring.datasource.password=
此处 daddycoffeeshop_db 不工作,但 test 数据库正在工作。为什么会这样?
其他代码... DaddyCoffeeShoApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DaddyCoffeeeShopApplication {
public static void main(String[] args) {
SpringApplication.run(DaddyCoffeeeShopApplication.class, args);
}
}
TestData.java
package com.example.demo;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@Component
public class TestData implements CommandLineRunner {
@Autowired
private JdbcTemplate jt;
@Autowired
private DataSource ds;
@Override
public void run(String... args) throws Exception {
String sql = "INSERT INTO RODUCT_DETAILS VALUES(?,?,?,?)" ;
int count = jt.update(sql, 10, "A", 234.45,"this is babysoap");
System.out.print("Inserted Rows" + count);
}
}
我觉得你的问题是权限。
请将 'daddycopeeshop_db' 的数据库角色委派给新帐户而不是根帐户。
您还需要开放与外界的联系。
请尝试以下操作:
将 . 上的所有权限授予 'user'@'localhost' WITH GRANT OPTION;
这也可以用 MySQL workbench 来完成。
按照下面提到的解决步骤进行操作,其中一个可能会解决您的问题:
解决方案 1:
第一个选项是使用下面的命令尝试使用用户名和正确的密码登录。此命令将提示您输入密码。输入正确的密码。 Mysql 将验证用户名和密码。如果两者都与现有系统匹配,则 mysql 将允许登录。由于密码无效,抛出“Access denied for user 'root'@'localhost'”错误。
$>mysql -u root -p Enter password:
解决方案 2:
如果您忘记了root用户,以下步骤将帮助您更新root密码。将使用提供的密码在 PASSWORD() 函数中修改 root 用户。下例中密码设置为“password”。此步骤将允许重置 root 用户密码。
$> mysqld --skip-grant-tables
$> mysql -u root mysql
mysql> update mysql.user set password=PASSWORD("password") where User='root';
mysql> flush privileges;
解决方案 3:
默认情况下,root 用户不会附加插件。使用插件“mysql native password”更新 root 用户此插件“mysql native password”允许本机身份验证。对于任何命令,如果 mysql 本机密码插件未设置为 root 用户,则会显示错误“用户‘root’@‘localhost’的访问被拒绝”。
$> mysqld --skip-grant-tables
$> mysql -u root mysql
mysql> update mysql.user set plugin = 'mysql_native_password' where User='root';
mysql> flush privileges;
$> mysql -u root mysql
mysql> update mysql.user set password=PASSWORD("password") where User='root';
mysql> flush privileges;
解决方案 4:
必须更改root用户和插件的密码。 alter 命令将更改 root 用户的密码并将插件更新为“mysql native password”。该插件以本机格式存储密码并允许本机身份验证。
$> mysqld --skip-grant-tables
$> mysql -u root mysql
mysql> ALTER mysql.user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> exit
start mysql again
解决方案 5:
根用户拥有管理员权限。为 root 用户提供从本地系统连接的所有权限。 grant 命令会将权限添加到 root 命令。如果您想恢复特权,请使用“撤销”命令。 “撤销”命令将删除用户的权限。
mysql> CREATE USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
or
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
mysql> FLUSH PRIVILEGES;