因此,我使用的是MySQL Server 8.0.16版,如果尝试动态创建新用户,则会收到一条错误消息,内容为:>> SQL语法错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法。在第1 <<行的'$ password'附近使用。
我不明白的原因是,如果我用实际值替换“参数”并在外壳中尝试使用它,它会完美地工作。我让我的代码以root用户身份连接,然后检查连接是否打开。因此,如果我进入代码并检查参数是否正确,一切看起来就很好。我还在xt字符串的开头和结尾处添加了>>'<<应该替换参数的字符串,但它没有改变错误或发生的事情。
yadcf.init(table, [
{
column_number : 1,
column_data_type: "rendered_html", //html
html_data_type: "text",
filter_default_label: "Select tag",
text_data_delimiter: String.fromCharCode(160)
}
]);
我希望它会创建一个新用户,但不会。
答案 0 :(得分:1)
否,对于CREATE USER
命令,我认为您不能同样传递命令参数。而是像下面那样使用字符串插值语法替换该值。
string query = $"CREATE USER '{name}@{host} IDENTIFIED BY {password}";
对于较旧的C#版本,请考虑使用string.Format()
string query = string.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{2}'",name,host,password);
每个OP的注释:您不能导致它不是DML操作。如果您担心 SQL注入可能会导致输入值来自用户输入,那么您将对其进行某种方式的清理,此外,如果您观察到输入被引用了,那么
同样,我建议这种管理操作应该在数据库引导脚本中进行,而不应该在您的应用程序代码中进行。