【问题标题】:[SQLException: Access denied for user ''@'179.43.156.163' (using password: YES)][SQLException: Access denied for user ''@'179.43.156.163' (using password: YES)]
【发布时间】:2017-09-08 18:55:41
【问题描述】:

我知道关于 SO 的这个论点有很多主题,但我认为我的不同,或者我就是找不到。 我用的是play framework 2.6,我的application.conf是这样的:

default.db = {
  url="jdbc:mysql://xxx.xxx.rds.amazonaws.com/dbname"
  host="xxx.xxx.rds.amazonaws.com"
  driver="com.mysql.jdbc.Driver"
  username="root"
  password="password"
}

编辑:其他一些可能很重要的部分:

slick.dbs.default.driver = "slick.driver.MySQLDriver$"
play.http.secret.key="KVNU8u1lFSV_eNdfc=6oMnP@M<bH4YS<ZJqC5954p@S>=PiXwusl:vf>RWL2w_=D"
play.filters.hosts.allowed = ["."]

我不断得到这个:

java.sql.SQLException: Access denied for user ''@'19.345.16.16' (using password: YES)

经过多次尝试,我也得到了这个:

SQLTransientConnectionException: ec2 - Connection is not available, request timed out after 1000ms.]

为什么它试图连接一个空用户? 我已经尝试过没有“”和许多其他组合..

编辑:我让它与一个空字段 ('') 用户连接,因此允许类型为 ''@'%' 的用户,但我仍然需要弄清楚为什么 slick 会尝试与匿名用户连接。现在 application.conf 的明智部分是:

slick.dbs.default.profile = "slick.jdbc.MySQLProfile$"
slick.dbs.default.db = {
  url="jdbc:mysql://xxx.xxx.us-west-2.rds.amazonaws.com/metamusic"
  host="xxx.xxx.us-west-2.rds.amazonaws.com"
  driver="com.mysql.jdbc.Driver"
  username=aa_admin
  password="password"
  keepAliveConnection = true
  connectionPool = disabled
}

【问题讨论】:

  • 发布完整的application.conf 文件。

标签: mysql scala playframework slick


【解决方案1】:

对于原来的问题:

java.sql.SQLException: Access denied for user ''@'19.345.16.16' (using password: YES)

我同意 nitin.sharma0180 的回答,这听起来像是 MySQL 用户权限错误和/或密码在过渡到托管数据库的服务器时丢失。尝试检查您使用的用户是否对数据库和表具有明确的权限,或者可能是由于字符编码而导致的密码错误。

如果前面的方法不起作用,则取决于您如何通过 Play 2.6 框架连接到数据库。您使用的是 JPA、直接 JDBC 还是其他?要回答这个问题,请检查您的 build.sbt、您的 application.conf 和正在导入项目的 Play 2 模块。

【讨论】:

  • 我使用的是 jdbc,而且很流畅。
【解决方案2】:

试试

mysql -u root -p

CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;

尝试登录 MYSQL

【讨论】:

  • mysql> 授予所有特权 * 。 * TO 'xxx_admin'@'%%';错误 1045 (28000):拒绝用户 'root'@'%' 的访问(使用密码:YES)
  • 它使用“GRANT ALL PRIVILEGES ON %.* TO 'xxx_admin'@'localhost'”工作
  • 但是使用这个用户它仍然和以前一样
  • 更新:在清理并重新运行所有内容后,它说该新创建的用户拒绝访问
【解决方案3】:

在您发布的应用程序配置中,您拥有用户名 root。假设这是数据库身份验证凭据,您可能设置不正确。 唯一应该使用 root 的时间是系统管理员在本地主机上。

一旦您配置了正确的数据库用户名和密码,您的错误就会被消除。

之前发布的授权内容是准确的,但再次......没有人使用“root”。

【讨论】:

  • 过去 6 个月我使用 root,现在我在 ec2 上更改了 db,这一切都发生了。
【解决方案4】:

我刚刚查看了我们自己的配置,但情况有点不同:

db {
    default {
       username="root"
       password=""
       url="jdbc:mysql://......"
    }
}

注意 default.db 与 db.default。

猜你喜欢
  • 2016-09-28
  • 2012-04-28
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2014-09-30
相关资源
最近更新 更多