【问题标题】:Cannot connect to MySql database [closed]无法连接到 MySql 数据库 [关闭]
【发布时间】:2012-05-20 17:02:38
【问题描述】:

我正在尝试测试与我的数据库的连接,但我不断收到以下错误

java.sql.SQLException: Access denied for user 'db'@'localhost' (using password: YES)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:798)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3700)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1203)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2572)
at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ConnectingToDB.main(ConnectingToDB.java:18)

我的代码如下。错误发生在线路上 "conn = DriverManager.getConnection(url+dbName,userName,password);"

public class ConnectingToDB
{
  public static void main(String[] args) 
  {
    System.out.println("MySQL Connect Example.");
    Connection conn = null;
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "steven";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "db"; 
    String password = "db";
    try 
    {
      Class.forName(driver).newInstance();
      conn = DriverManager.getConnection(url+dbName,userName,password);
      System.out.println("Connected to the database");
      conn.close();
      System.out.println("Disconnected from database");
    } 
    catch (Exception e) {
    e.printStackTrace();
   }
 }

}

【问题讨论】:

  • 确保您的用户名和密码正确,并且他们可以从本地/远程机器访问数据库
  • conn = DriverManager.getConnection(url+dbName,userName,password); - 不应该有, 而不是+
  • 您确定密码正确吗?
  • @AndriusNaruševičius url+dbName = jdbc:mysql://localhost:3306/steven 这是连接 mysql 的有效 url
  • 您是否尝试过使用其他客户端(如 MySQL Workbench)以相同的用户/密码连接到 steven 数据库?

标签: java mysql database jdbc


【解决方案1】:

如您所见,您的凭据由 MySql 处理但被拒绝,这意味着问题可能与凭据没有直接关系,因为如果凭据错误,则错误将与被拒绝的错误不同。当凭据被拒绝时,问题主要与:

  1. 权限问题 - 解决方案 >> 从“Localhost”授予使用“db”的权限
  2. 您的连接字符串看起来不错,但有时字符串编码会导致此错误
  3. 一些安装的组件干扰了MySql -> 检查组件安装

尝试对上述步骤逐一进行故障排除..

【讨论】:

  • 谢谢我的问题是权限问题。我的服务器主机阻止了除 localhost 之外的所有连接,我得到了完全相同的错误。
【解决方案2】:

你应该检查你的mysql中是否存在db@localhost。否则创建具有必要权限的用户配置文件。

CREATE USER user_specification
    [, user_specification] ...

user_specification:
    user [IDENTIFIED BY [PASSWORD] 'password']

详情请查看CREATE USER Syntax

【讨论】:

    【解决方案3】:

    LOCALHOST 和“机器名”与 MySQL 不同。我会从命令行检查您是否可以连接到 localhost:

    mysql -hlocalhost -udb -pdb steven

    如果失败,请使用适当的权限连接并运行它:

    create user db@localhost identified by 'db';
    grant select on steven.* to db@localhost;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-03
      • 2014-01-25
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多