Connect to RDS MySQL programatically (NodeJs, Java) - ER_ACCESS_DENIED_ERROR: Access denied for user
Connect to RDS MySQL programatically (NodeJs, Java) - ER_ACCESS_DENIED_ERROR: Access denied for user
我正在尝试使用 NodeJs mysql 库连接到我的 RDS(AWS MySQL 数据库)。
const mysql = require('mysql');
var connection;
connection = mysql.createConnection({
host: 'xxx.us-east-1.rds.amazonaws.com',
port: 3306,
user: "username",
password: "MyPassword",
database: "DbName",
});
我也在尝试 mysql2 和续集。他们都得到了相同的结果:
{
error: ER_ACCESS_DENIED_ERROR: Access denied for user 'username'@'myhost,
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlState: '28000'
}
但是,此远程数据库设置为 public,我可以使用 mysql 命令连接到它:
mysql -u username -pMyPassowrd -h xxx.us-east-1.rds.amazonaws.com
我也可以通过 MySQL Workbench 连接到它。
此外,问题不在 NodeJs 中,因为我能够连接到我的本地数据库:
connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'test',
});
总而言之,我的 AWS 数据库 public 可用并且我可以连接到它,只是出于某种原因没有使用 NodeJs。
我还没有找到有用的答案。有人遇到过这个问题吗?
更新:
尝试在 Java 中使用简单连接 returns 进行连接,结果也相同:
final Connection con = DriverManager.getConnection("jdbc:mysql:/xxx.us-east-1.rds.amazonaws.com:3306/DbName", "username", "MyPassword");
更新 2:
我缺少 Java 代码的一个斜线。我需要使用 jdbc:mysql://
而不是 jdbc:mysql:/
。但是NodeJs的实现还是一大谜团。
答案很简单,只需添加一个 ssl 选项和 true value
connection = mysql.createConnection({
host: 'xxx.us-east-1.rds.amazonaws.com',
port: 3306,
user: "username",
password: "MyPassword",
database: "DbName",
ssl: true //this does the trick
});
我正在尝试使用 NodeJs mysql 库连接到我的 RDS(AWS MySQL 数据库)。
const mysql = require('mysql');
var connection;
connection = mysql.createConnection({
host: 'xxx.us-east-1.rds.amazonaws.com',
port: 3306,
user: "username",
password: "MyPassword",
database: "DbName",
});
我也在尝试 mysql2 和续集。他们都得到了相同的结果:
{
error: ER_ACCESS_DENIED_ERROR: Access denied for user 'username'@'myhost,
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlState: '28000'
}
但是,此远程数据库设置为 public,我可以使用 mysql 命令连接到它:
mysql -u username -pMyPassowrd -h xxx.us-east-1.rds.amazonaws.com
我也可以通过 MySQL Workbench 连接到它。
此外,问题不在 NodeJs 中,因为我能够连接到我的本地数据库:
connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'test',
});
总而言之,我的 AWS 数据库 public 可用并且我可以连接到它,只是出于某种原因没有使用 NodeJs。
我还没有找到有用的答案。有人遇到过这个问题吗?
更新:
尝试在 Java 中使用简单连接 returns 进行连接,结果也相同:
final Connection con = DriverManager.getConnection("jdbc:mysql:/xxx.us-east-1.rds.amazonaws.com:3306/DbName", "username", "MyPassword");
更新 2:
我缺少 Java 代码的一个斜线。我需要使用 jdbc:mysql://
而不是 jdbc:mysql:/
。但是NodeJs的实现还是一大谜团。
答案很简单,只需添加一个 ssl 选项和 true value
connection = mysql.createConnection({
host: 'xxx.us-east-1.rds.amazonaws.com',
port: 3306,
user: "username",
password: "MyPassword",
database: "DbName",
ssl: true //this does the trick
});