【问题标题】:Amazon EC2 Tomcat7 instance unable to access MySQL db on same systemAmazon EC2 Tomcat7 实例无法访问同一系统上的 MySQL 数据库
【发布时间】:2015-05-12 02:30:53
【问题描述】:

我想我已经看到了很多关于这个主题的类似帖子,但仍然无法解决我的问题,所以我想我会发布我的具体信息。

我有一个运行 Tomcat7 Web 服务器的 Amazon AWS Linux EC2 实例。在同一台机器上,我还运行 MySQL5 服务器,但无法让 Tomcat 应用程序与 MySQL 数据库通信。

我在 tomcat 上的 Java 应用程序尝试通过读取属性文件来连接 MySQL:

jdbc.mysql.host.path=jdbc:mysql://localhost/  
jdbc.mysql.schema=prod  
jdbc.mysql.username=root  
jdbc.mysql.password=<password>  

我正在通过网络浏览器从另一个系统访问应用程序,但是当应用程序尝试连接到数据库时,我在 catalina.out 中收到以下错误:

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

我很确定问题与 Tomcat 和 MySQL 之间的权限和通信有关,因为 我已经编写了一个简单的 java 程序,使用相同的代码来读取相同的属性文件,并且建立了连接成功

以下是我尝试解决的一些问题:

  • 更改属性文件的所有者(当前归“Tomcat”所有)
  • 确保用户“root”已被授予 MySQL 中的所有权限
  • 确保我的测试服务器可以访问端口 3306(MySQL 默认端口)
  • 更新的 iptables 对 /etc/my.cnf 文件进行了各种修改 (尝试绑定ip,但没有成功)

我有一种预感,这个问题可能与我尝试使用用户“root”访问 MySQL 数据库有关。即使我通过 localhost 访问它,系统也可能不支持这一点,因为 MySQL 将其视为来自单独主机的访问,并且(也许?)不允许来自其他主机的 root 访问?

任何关于尝试的建议都将不胜感激......

【问题讨论】:

  • 这不是防火墙问题。如果是,您会看到不同的错误。相反,这是您在 mysql 中的用户/密码组合的问题。
  • 我不明白如果我的独立 Java 程序使用相同的代码和属性文件来获取用户名和密码,情况会如何
  • 感谢@Jarmod,这个文档真的很有帮助!

标签: mysql linux security amazon-ec2 tomcat7


【解决方案1】:

我认为问题是多种因素的结合。
以下是一些需要考虑的事项,最终为我解决了这个问题:
- 确保您通过浏览器访问正确的应用程序(我使用的是 ROOT 应用程序,但尝试连接到另一个应用程序)
- 使用“创建用户 ....”确保用户存在于 MySQL 中
- 确保在有问题的数据库上授予所有权限,出于某种原因授予上的所有权限。对我不起作用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    相关资源
    最近更新 更多