Prima di eseguire il comando, è necessario aprire la connessione
using(MySqlConnection Connection = new MySqlConnection("SERVER=localhost;UID=root;"))
using(MySqlCommand Command = new MySqlCommand("CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'superpassword';", Connection))
{
Connection.Open();
Command.ExecuteNonQuery();
}
Non dimenticare di racchiudere i comandi usa e getta in una dichiarazione d'uso
MODIFICA Guardando il tuo codice (perché non lo metti subito qui?) è chiaro dov'è l'errore
questa riga
this.COMMAND = String.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{3}';", username, host, password);
dovrebbe essere
this.COMMAND = String.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{2}';", username, host, password);
Ci sono tre parametri passati al formato stringa, quindi gli indici da usare per i segnaposto in string.format sono 0, 1 e 2.
Hai usato 3 per la password e questo dà l'eccezione fuori intervallo