Antes de ejecutar el comando, debe abrir la conexión
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();
}
No olvide incluir los comandos desechables en una declaración de uso
EDITAR Mirando su código (¿por qué no lo pone aquí inmediatamente?) está claro dónde está el error
esta línea
this.COMMAND = String.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{3}';", username, host, password);
debería ser
this.COMMAND = String.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{2}';", username, host, password);
Hay tres parámetros pasados al formato de cadena, por lo que los índices que se utilizarán para los marcadores de posición en el formato de cadena son 0, 1 y 2.
Usó 3 para la contraseña y esto da la excepción de fuera de rango