授予所有特权会导致远程执行远程访问时拒绝访问异常

时间:2019-08-03 18:20:22

标签: java jdbc mariadb

我正在编写一个JavaFX应用程序,该应用程序允许用户远程管理不同的数据库。 sql服务器位于本地网络(IP:192.168.1.2)的树莓派中,因此我已授予mypc@192.168.1.3所有特权,以便测试每个操作的结果。现在,我正在实现一种允许用户创建新数据库的方法。正在创建数据库,但是我想将新创建的数据库的特权授予另一个用户,例如pi@192.168.1.2。我被抛出以下异常: “拒绝用户'mypc'@'192.168.1.3'访问数据库'createDBtest'”

我搜索了很多帖子,所有帖子都得出结论,缺少特权时会抛出此类异常。我尝试在创建时授予所有特权,但是却遇到了相同的错误。 以下是该函数的摘录: **由于连接是一个不同的类,并且数据库名称是从上一个函数中得知的,因此我没有发布它们,但是我确信两者均已100%正确实现,并且在那里未发现问题。

public void grantPrivilegesOnCreatedDatabase(){

    setClientIp(getClientIpTextField().getText());
    setClientUserName(getClientUsernameTextField().getText());
    setClientPassword(getClientPasswordPasswordField().getText());
    setClientPasswordVerification(
                       getClientPasswordPasswordField().getText());

    String sql = "GRANT ALL PRIVILEGES ON "+getDatabaseName()+".*TO "+
                 getClientUsername() + "@"+getClientIp()+" IDENTIFIED BY '"+
                 getClientPassword()+"';"

    try{
        PreparedStatement statement = connection.prepareStatement(sql);
        int result = statement.executeUpdate();
        if(result > 0){
           System.out.println("Privileges on "+ getDatabaseName() +
           " granted to " + getClientUsername()+"@"+getClientIp() + 
           " identified by '"+getClientPassword()+"'");
        }
        connection.close();
      }catch(SQLException exception){
         exception.printStackTrace();
      }
}

此代码从我的PC(192.168.1.3)运行,并且应该为我的树莓派(192.168.1.2)上的用户授予新创建的数据库的特权。我在这里做错什么了吗?

0 个答案:

没有答案