Я пытаюсь динамически создавать базы данных для автоматизации одной из моих задач, я могу создать базу данных и создать пользователя, но как только я пытаюсь дать разрешения этому пользователю через root, он дает мне доступпользователю 'root' @ 'myip' отказано в базе данных 'mydb'. "
Я пробовал сбрасывать разрешения, игнорировать разрешения, добавлять к хосту символы подстановки, указывать прямой хост.
connString = "SERVER='myserver.com';PORT=3306;UID=root;password='myrootpassword'";
try
{
conn = new MySqlConnection();
conn.ConnectionString = connString;
conn.Open();
MessageBox.Show("Connection Successful");
MySqlCommand command = new MySqlCommand(string.Format(@"CREATE DATABASE 'myServerPrefix'_{0}_db;", txtSubdomain.Text), conn);
command.ExecuteNonQuery();
dbName = txtDatabase.Text = string.Format("'myServerPrefix'{0}_db", txtSubdomain.Text);
string password = GetRandomAlphanumericString(16);
Console.WriteLine(password);
command = new MySqlCommand(string.Format(@"CREATE USER ''myServerPrefix'_{0}_usr' IDENTIFIED BY '{1}';", txtSubdomain.Text, password), conn);
command.ExecuteNonQuery();
dbUser = txtUser.Text = string.Format("'myServerPrefix'_{0}_usr", txtSubdomain.Text);
dbPassword = txtPass.Text = password;
command = new MySqlCommand(@"FLUSH PRIVILEGES", conn);
command.ExecuteNonQuery();
command = new MySqlCommand(string.Format(@"grant all privileges on {0}.* to {1}@'myIp' identified by '{2}';@';", dbName, dbUser, password), conn);
command.ExecuteNonQuery(); //Fails with this command.
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Ожидаемые результаты состоят в том, что база данных должна быть создана с пользователем, у которого есть полные права доступа для этой конкретной базы данных, фактические результаты - это база данных, которая создается, пользователь создается и сообщение об ошибке, которое гласит:
Отказано в доступе пользователю 'root' @ 'myIp' к базе данных 'myDb'.
Проблема, скорее всего, заключается в том, что мой мозг, лишенный сна, пытается грубой силой найти путь к решению, я надеюсьчто я просто неправильно форматирую свои команды и что решение является чем-то простым, однако любая помощь, которую я могу получить по этой проблеме, будетвысоко ценится.