如何编写Java程序对Aurora MySQL数据库进行身份验证?
我在编写将在Aurora数据库上运行SQL查询的Java程序时遇到问题 我知道我的数据库名是goodnameofdb 我运行以下命令:aws rds descripe db instances | grep DBInstanceIdentifier 我看到:如何编写Java程序对Aurora MySQL数据库进行身份验证?,java,mysql,amazon-web-services,amazon-aurora,Java,Mysql,Amazon Web Services,Amazon Aurora,我在编写将在Aurora数据库上运行SQL查询的Java程序时遇到问题 我知道我的数据库名是goodnameofdb 我运行以下命令:aws rds descripe db instances | grep DBInstanceIdentifier 我看到: "ReadReplicaDBInstanceIdentifiers": [], "DBInstanceIdentifier": "goodnameofdb" "ReadReplicaDBIns
"ReadReplicaDBInstanceIdentifiers": [],
"DBInstanceIdentifier": "goodnameofdb"
"ReadReplicaDBInstanceIdentifiers": [],
"DBInstanceIdentifier": "goodnameofdb-us-west-2b"
我知道我的极光数据库的地址。我运行以下命令:aws rds descripe db instances | grep goodnameofdb-us-west-2b.abcdef123456
我看到:
"ReadReplicaDBInstanceIdentifiers": [],
"DBInstanceIdentifier": "goodnameofdb"
"ReadReplicaDBInstanceIdentifiers": [],
"DBInstanceIdentifier": "goodnameofdb-us-west-2b"
“地址”:“goodnameofdb-us-west-2b.abcdef123456.us-east-2.rds.amazonaws.com”
我的Java程序编译。我的驱动程序也在正确的目录中
我有一个Java程序,代码如下:
import java.sql.*;
class MysqlCon{
public static void main(String args[]){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(
"jdbc:mysql://goodnameofdb-us-west-2b.abcdef123456.us-east-2.rds.amazonaws.com:3306/goodnameofdb","jdoe","securepassword");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("show tables");
while(rs.next())
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
con.close();
}catch(Exception e){ System.out.println(e);}
}
}
当我运行编译后的程序时,它不工作。我看到这个错误:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:未知数据库“goodnameofdb”
我从一个EC-2实例运行Java程序,该实例与Aurora数据库所在的VPC相同。(我通过AWS CLI命令进行了检查。)我希望程序能够连接到Aurora数据库并进行身份验证。
我的连接JDBC连接字符串有什么问题?或者为什么我会犯这个错误
更新:当我删除字符串中“:3306/”部分后的“goodnameofdb”并重新编译程序时,我在运行程序时出错。我收到的错误是
java.sql.SQLException:未选择任何数据库
因此,我认为必须有一个数据库名。我的AWS CLI命令似乎告诉我名称正确。数据库“goodnameofdb”似乎不存在。 您可以从mysql公共行进行检查。
mysql-hgoodnameofdb-us-west-2b.abcdef123456.us-east-2.rds.amazonaws.com-ujdoe-psecurepassword;
显示数据库;
如果goodnameofdb不存在,则需要创建一个名为goodnameofdb的db。
mysql>创建数据库goodnameofdb;
然后,再试一次
我们的团队也使用aurora,aurora与mysql兼容。当您创建aurora集群时,您会提到
数据库名称
名称以及主用户
和主用户密码
。这里的数据库指的是默认的mysql数据库(有时也指schema
),而不是您的db集群标识符(在您的示例“goodnameofdb”中)
在您的例子中,您创建的默认数据库可能没有命名为goodnameofdb
,或者您没有明确提供一个,从而使Aurora为您创建一些默认数据库
无法使用AWS CLI获取数据库实例的数据库名称。使用主用户凭据,通过mysql cli(或类似工具)连接到数据库,并列出Aurora群集中的数据库(show databases;
)
我相当肯定您正在尝试使用一个不存在的mysql数据库 您能从ec2实例中使用mysql工具打开数据库吗?(例如
mysql-hgoodnameofdb-us-west-2b.abcdef123456.us-east-2.rds.amazonaws.com-ujdoe-psecurepassword goodnameofdb
)否。我得到“错误1049(42000):未知数据库goodnameofdb”是否与goodnameofdb-us-west-2b
一起工作?否。请注意端点(如AWS控制台所示)包括“abcdef123456”。我尝试了goodnameofdb的变体(包括使用AWS控制台显示的端点)。他们都带着“未知数据库…”…amazonaws.com:3306/goodnameofdb