@Override
 public boolean userExists(String user, String host) {
   MycatConfig conf = MycatServer.getInstance().getConfig();
   Map<String, Set<String>> quarantineHosts = conf.getQuarantine().getHosts();
   if (quarantineHosts.containsKey(host)) {
     boolean rs = quarantineHosts.get(host).contains(user);
     if (!rs) {
       ALARM.error(
           new StringBuilder()
               .append(Alarms.QUARANTINE_ATTACK)
               .append("[host=")
               .append(host)
               .append(",user=")
               .append(user)
               .append(']')
               .toString());
     }
     return rs;
   } else {
     if (user != null && user.equals(conf.getSystem().getClusterHeartbeatUser())) {
       return true;
     } else {
       return conf.getUsers().containsKey(user);
     }
   }
 }
 @Override
 public Set<String> getUserSchemas(String user) {
   MycatConfig conf = MycatServer.getInstance().getConfig();
   UserConfig uc = conf.getUsers().get(user);
   if (uc != null) {
     return uc.getSchemas();
   } else {
     return null;
   }
 }
 @Override
 public boolean isDeleteAllow(String user) {
   MycatConfig conf = MycatServer.getInstance().getConfig();
   UserConfig uc = conf.getUsers().get(user);
   if (uc != null) {
     return uc.isDeleteAllow();
   } else {
     return false;
   }
 }
 @Override
 public String getPassword(String user) {
   MycatConfig conf = MycatServer.getInstance().getConfig();
   if (user != null && user.equals(conf.getSystem().getClusterHeartbeatUser())) {
     return conf.getSystem().getClusterHeartbeatPass();
   } else {
     UserConfig uc = conf.getUsers().get(user);
     if (uc != null) {
       return uc.getPassword();
     } else {
       return null;
     }
   }
 }
 @Override
 public boolean schemaExists(String schema) {
   MycatConfig conf = MycatServer.getInstance().getConfig();
   return conf.getSchemas().containsKey(schema);
 }