【问题标题】:How to use ip-address with username in connection string?如何在连接字符串中使用带有用户名的 IP 地址?
【发布时间】:2018-02-09 20:07:48
【问题描述】:

我写了这个方法,但是如果 "uid" 中有 ' 符号,它会抛出 System.ArgumentException。

        public void Init(string constr)
            {
                var server = "a222068_6.mysql.mchost.ru";
                var database = "'a222068_6'";
                var uid = "'a222068_6'@'10.0.2.13'";
                var pass = "pass";

                constr = "SERVER=" + server + ";DATABASE=" + database + ";UID=" + uid + ";PASSWORD=" + pass + ";SSL Mode=None;";
                cnt = new MySqlConnection(constr); // Exception is thrown here
            }

在没有'的情况下尝试连接时出现异常消息

Authentication to host 'a222068_6.mysql.mchost.ru' for user 'a222068_6@10.0.2.13' using method 'mysql_native_password' failed with message: Access denied for user 'a222068_6@10.0.2.13'@'localhost' (using password: YES)

【问题讨论】:

  • 您应该使用 MySqlConnectionStringBuilder 自动执行此操作。
  • 在我看来,";UID=\"" + uid + "\";PASSWORD=" 应该可以工作,但是如上所述,MySqlConnectionStringBuilder 类应该会自动修复潜在的引用问题。
  • 不,它也不起作用。或者我可能以错误的方式使用 MySqlConnectionStringBuilder。

标签: c# mysql database connection database-connection


【解决方案1】:

改变

var uid = "'a222068_6'@'10.0.2.13'";

var uid = @"a222068_6@10.0.2.13";

【讨论】:

    【解决方案2】:

    使用verbatim string literal

    逐字字符串文字以@ 开头,也用双引号括起来。

    还有其他几个 StackOverflow 答案以及如何使用 MySqlConnectionStringBuilder 的示例,例如this one

    var connectionStringBuilder = new MySqlConnectionStringBuilder
    {
        Server = "<instanceIp>",
        UserID = "<userId>",
        Password = "<password>",
        Database = "<databaseName>",
        CertificateFile = @"<Path_To_The_File>\client.pfx",
        CertificatePassword = "<Password_For_The_Cert>"
    };
    
    var conn = new MySqlConnection(connectionStringBuilder.ToString())
    

    【讨论】:

      猜你喜欢
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多