Как исправить «root запрещен доступ к новой базе данных», когда база данных была только что создана с root - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь динамически создавать базы данных для автоматизации одной из моих задач, я могу создать базу данных и создать пользователя, но как только я пытаюсь дать разрешения этому пользователю через 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'.

Проблема, скорее всего, заключается в том, что мой мозг, лишенный сна, пытается грубой силой найти путь к решению, я надеюсьчто я просто неправильно форматирую свои команды и что решение является чем-то простым, однако любая помощь, которую я могу получить по этой проблеме, будетвысоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...