我正在尝试动态创建数据库以自动化我的任务之一,能够创建数据库并创建用户,但是一旦我尝试通过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'。
问题很可能是我的睡眠不足的大脑试图强行进入解决方案,我希望我只是错误地格式化了命令,并且解决方案很简单,但是我可以从中获得任何帮助问题将不胜感激。