我有2个数据库:我自己创建的harrington和我继承的pacsdb。这两个都位于相同的MySQL数据库中。我正在使用Netbeans来调试东西。在Netbeans中,我可以通过
连接到数据库jdbc:mysql://192.168.0.100:3306/harrington?zeroDateTimeBehavior=convertToNull [fiji on Default schema]
jdbc:mysql://192.168.0.100:3306/pacsdb?zeroDateTimeBehavior=convertToNull [pacs on Default schema]
jdbc:mysql://localhost:3306/pacsdb?zeroDateTimeBehavior=convertToNull [pacs on Default schema]
对于我自己的数据库,harrington,我在Netbeans或我自己的Java程序中都没有问题。 Pacsdb将无法使用192.168.0.100进行连接,但它将使用localhost进行连接。在我的程序中,它给出了
java.sql.SQLException: Access denied for user 'pacs'@'192.168.0.100' (using password: YES)
为了检查发生了什么,我查询了sql数据库表'user'。我得到了两个用户都使用'%'作为主机,这是我对代码的期望
sql = "create user 'pacs'@'%' identified by 'pacs'";
OK1 = executeStatement(stm1, sql);
if(OK1) {
sql = "grant all on pacsdb.* to 'pacs'@'%' identified ";
sql += "by 'pacs1' with grant option";
executeStatement(stm1, sql);
sql = "flush privileges";
executeStatement(stm1, sql);
}
当我查询sql'db'表时,我发现了一个区别。我有两个条目
Host Db User
% harrington fiji
localhost pacsdb pacs
我尝试使用localhost删除pacsdb的条目,并为pacsdb插入一个新条目,并将Host设置为'%'。显然,这不是从localhost更改的方法,因为我很难到达pacsdb。我从'db'中删除了条目,并插入了一个新条目,其中'%'设置回'localhost'。这让我重新接受了拒绝访问错误。
所以我的问题是:如何从'localhost'更改为'%'?
答案 0 :(得分:1)
问题不是查询,而是与数据库的连接。
MySql可以限制从不同于localhost的IP访问它的用户的访问。
您可能无权从IP访问数据库。
尝试使用以下命令添加正确的权利
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'*'
IDENTIFIED BY 'newpassword';
显然,您无法远程连接以执行该命令。您需要通过SSH在远程计算机上输入并在本地启动该命令。