当前位置: 首页 > 面试题库 >

SQLException:用户'whatever'@'localhost'的访问被拒绝

阎鸿煊
2023-03-14
问题内容

凭据正确,数据库名称正确,MySQL用户设置正确且具有所有特权,我有“
username’@’%’和’username’@’localhost’的条目,我可以通过命令行连接到该用户正确地,以及通过mysql工作台。换句话说,除了我的Java应用程序无法连接之外,所有内容均应按其应有的方式工作并按应有的方式进行设置。

我做了3次干净的MySQL卸载和安装,没有重启,没有重启,试图以root身份通过应用程序登录(通过),这是行不通的,试图以没有密码的用户身份登录应用程序(错误),等等。

同样,使用完全相同的登录名在localhost上运行的PHP网站也可以正常工作。

在过去的三天里,我一直在检查和重新检查并尝试所有这些方法,我经历了所有相关的SO问题,我可以找到的所有博客和文档。

try {
  Class.forName("com.mysql.jdbc.Driver").newInstance();
  conn = DriverManager.getConnection("jdbc:mysql://localhost/correctDBname", "correctUsername", "correctPassword");
} catch(ClassNotFoundException | SQLException ex) {
  Logger.getLogger(SqlConnection.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
}

与项目中NetBeans的“库”部分中显示的MySQL驱动程序名称完全相同: MySQL JDBC Driver-mysql-connector-
java-5.1.23-bin.jar

例外情况的全文:

java.sql.SQLException: Access denied for user 'strada'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at eu.storemedia.stradaserver.engine.SqlConnection.<init>(SqlConnection.java:23)
at eu.storemedia.stradaserver.engine.StradaServer.<init>(StradaServer.java:51)
at eu.storemedia.stradaserver.Home.<clinit>(Home.java:31)

问题答案:

…证明从.txt文件中读取凭据可能很危险,而以简化它的名义从问题中忽略了这一事实是一个错误。

如果我使用硬编码的凭据,则登录有效。
如果我使用从错误创建的.txt文件中读取的凭据,则会发生错误。如果我使用从正确创建的.txt文件(无BOM的utf-8)中读取的凭据,则登录有效。

我已经正确地重写了我从中读取凭据的文件,因此我无法找到任何详细信息,但是基本上 它包含一些使凭据无效的不可见字符(可能是BOM)。



 类似资料:
  • 凭据正确,数据库名称正确,MySQL用户设置正确并且拥有所有权限,我有“username”@“%”和“username”@“localhost”的条目,我可以通过命令行以及MySQL workbench正确连接到此用户。换句话说,除了我的java应用程序无法连接之外,一切都正常工作,并被设置为正常状态。 我做了大约3个干净的卸载和安装MySQL,有重启,没有重启,试图通过应用程序登录为root(通

  • 问题内容: 我正在尝试从数据库中获取记录。但我正面临拒绝访问的问题。我尝试了在堆栈溢出中提到的其他解决方案,例如向用户授予特权。 访问数据库的代码: 错误的堆栈跟踪: 在这种情况下可能是什么问题。我尝试创建一个新的数据库,但是也没有用。 问题答案: 问题是授予表根用户的权限。’root’@’%’没有任何权限。.就像我以前用作连接地址一样,因此它给出了拒绝访问错误.. 是IP地址的通配符。所以mys

  • 我复制粘贴了第一个数据库的代码,但正如您所看到的,我刚刚用第二个数据库的名称更改了第一个数据库的名称,并且更改了特定表的COLLMNs名称。 有人能帮我这个吗?我想提一下,我已经尝试了我在YT上看到的不同的东西(如在my.ini中添加跳过授予表)

  • 关于这个问题,我找了很多,但没有找到任何好的解决办法 我的数据库名称:员工管理系统 我的应用程序属性: 我与DB的关系: 运行详细信息: 我在模型中有一个实体employee,在存储库中有一个接口employeeDao,它继承了jpaRepository findALL中的一个方法,在一个EmployeeController控制器文件夹类中使用。

  • 问题内容: $ ./mysqladmin -u root -p ‘ 编辑 ‘ 输入密码: mysqladmin:在“ localhost”处连接到服务器失败错误: “对用户“ root” @“ localhost”的访问被拒绝(使用密码:是) 我怎样才能解决这个问题? 问题答案: 打开并编辑或,具体取决于您的发行版。 在下添加 重启MySQL 您现在应该可以使用以下命令登录mysql 跑 设置新密

  • 我工作在Spring启动和使用mysql通过jpa,但同时运行的应用程序,我面临的问题 这是申请表。属性文件 pom.xml文件是 课程类别如下