private String createUser(DatabaseConnection pDatabaseConnection, String pPromoteUserName, String pPassword)
  throws ExInstaller {

    String lPassword = pPassword;
    //Prompt user for password
    if (XFUtil.isNull(pPassword) ){
      lPassword = CommandLineWrapper.readPassword("Enter password for new " + pPromoteUserName + " user");
      String lConfirmPassword = CommandLineWrapper.readPassword("Confirm password");

      if(!lPassword.equals(lConfirmPassword)){
        throw new ExInstaller("Passwords did not match");
      }
    }
    
    String lCreateUserSQL;
    try {
      lCreateUserSQL = IOUtils.toString(getClass().getResourceAsStream(CREATE_USER_FILE_NAME));
    }
    catch (IOException e) {
      throw new ExInstaller("Could not read user create script", e);
    }
    //Replace the username and password in the create user SQL file
    lCreateUserSQL = lCreateUserSQL.replaceAll(PROMOTE_USER_BIND_STRING, pPromoteUserName);
    lCreateUserSQL = lCreateUserSQL.replaceAll(":PASSWORD", lPassword);
    
            
    Logger.logAndEcho("Creating new user...");

    //Run the SQL to create the userdev
    PreparedStatement lCreateUserStatement;
    try {
      lCreateUserStatement = pDatabaseConnection.getPromoteConnection().prepareStatement(lCreateUserSQL);
      lCreateUserStatement.executeUpdate();
      lCreateUserStatement.close();
    }
    catch (SQLException e) {
      throw new ExInstaller("Failed to create " + pPromoteUserName + " user: " + e.getMessage(), e);
    } 
    
    return lPassword;
  }