首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库不是由Spring中完成的项目访问的

问数据库不是由Spring中完成的项目访问的
EN

Stack Overflow用户
提问于 2020-12-04 06:04:25
回答 3查看 685关注 0票数 0

我刚开始使用spring启动,我想将我的数据库与jdbc连接到spring启动项目。它只对一个数据库成功,当我将数据库名称更改为另一个数据库时,它将无法工作。在我的项目中,我只将数据库连接到spring启动。因此,我认为当数据库名称更改时,它应该可以工作。如果有人能帮我解决我的问题,我很感激。

错误

代码语言:javascript
复制
Access denied for user ''@'localhost' to database 'daddycoffeeshop_db'.
and
Error creating bean with name 'jdbcConverter' defined in class path resource

application.properties

代码语言:javascript
复制
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不能工作,但是测试数据库正在工作。为什么会这样呢?

其他密码..。DaddyCoffeeShoApplication.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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);
    }
    

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-12-04 06:45:50

我觉得你的问题是权威。

请将“daddycopeeshop_db”的DB角色委托给新帐户,而不是根帐户。

你还需要开放你的外部世界。

票数 1
EN

Stack Overflow用户

发布于 2020-12-04 07:30:03

请试用以下方法:

授予所有特权。以“user”@“localhost”和“GRANT”选项;

这也可以通过MySQL工作台来实现。

票数 1
EN

Stack Overflow用户

发布于 2020-12-04 08:46:24

遵循下面提到的解决方案步骤,其中一个可以解决您的问题:

解决方案1:

第一个选项是使用下面的命令尝试使用用户名登录并更正密码。此命令将提示您输入密码。输入正确的密码。Mysql将验证用户名和密码。如果两者都与现有系统匹配,那么mysql将允许登录。由于密码无效,引发错误“拒绝用户‘root’@‘localhost’访问”。

代码语言:javascript
复制
$>mysql -u root -p Enter password:

解决方案2:

如果您忘记了根用户,下面的步骤将帮助您更新根密码。根用户将在PASSWORD()函数中使用提供的密码进行修改。在下面的示例中,密码被设置为“密码”。此步骤将允许重置根用户密码。

代码语言:javascript
复制
$> mysqld --skip-grant-tables

$> mysql -u root mysql

mysql> update mysql.user set password=PASSWORD("password") where User='root';

mysql> flush privileges;

解决方案3:

默认情况下,根用户不会附加插件。用插件‘mysql本机密码’更新根用户这个插件‘mysql本机密码’允许本地身份验证。对于任何命令,如果mysql本机密码插件没有设置为root用户,则会显示错误“拒绝用户‘root’@‘localhost’”。

代码语言:javascript
复制
$> 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:

必须更改根用户的密码和插件。alter命令将更改根用户的密码,并将插件更新为“mysql本机密码”。该插件以本机格式存储密码,并允许本地身份验证。

代码语言:javascript
复制
$> 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:

根用户拥有管理权限。为根用户提供从本地系统连接的所有权限。授予命令将将特权添加到根命令中。如果要恢复特权,请使用“revoke”命令。“revoke”命令将从用户中删除特权。

代码语言:javascript
复制
 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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65138707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档