首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:用户登录失败

问MySQL:用户登录失败
EN

Stack Overflow用户
提问于 2019-05-27 17:15:30
回答 1查看 741关注 0票数 0

我尝试使用InterServer连接到C# ASP.NET MVC托管在Plesk上的SQL数据库。尽管做了很多努力,但它似乎从来不想联系。我做错了什么?

我已经多次尝试更改连接字符串。Plesk和InterServer支持要求我部署代码并通过本地主机访问数据库。因此,我尝试了以下连接字符串:

代码语言:javascript
复制
"SERVER=localhost;DATABASE=databasename;UID=username;PASSWORD=password;"
"SERVER=localhost:3306;DATABASE=databasename;UID=username;PASSWORD=password;"
"SERVER=localhost;PORT=3306;DATABASE=databasename;UID=username;PASSWORD=password;"
"SERVER=(Local);DATABASE=databasename;UID=username;PASSWORD=password;"

我尝试过将"Server“与"Data”互换,以及其他关键字更改。我还尝试将Trusted_Connection设置为true和false,将Integrated设置为true和false。当我试图将它们设置为true时,应用程序尝试使用我的Plesk用户名登录,而不是使用在连接字符串中指定的用户ID登录。此用户与数据库没有关联,我也无法将其关联到Plesk控制面板中。

我还尝试使用Plesk中的默认连接字符串,以及对所述连接字符串的几个修改,其中一个甚至由InterServer支持提供,因为他们怀疑错误在我的连接字符串中。下面是这些字符串:

代码语言:javascript
复制
"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
"Data Source=(IPAddressWasHere)\MSSQLSERVER2017;Initial Catalog=nlstatic;Persist Security Info=True;User ID=username;Password=password"
"Data Source=.\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\db.mdf;Initial Catalog=Portal.Web;Integrated Security=True"
"Data Source=.\SQLExpress;Initial Catalog=localhost;Integrated Security=True"

我也尝试过将proverName从System.Data.SqlClient更改为MySql.Data.SqlClient,但这似乎并没有改变错误消息。就我个人而言,我怀疑这个问题不是与连接字符串设置有关,而是与MySQL数据库或其设置的配置有关。

尽管他们试图在这方面寻求InterServer的支持,但他们拒绝调查此事。相反,他们曾经要求我“正确地设置我的VPS”(我根本没有VPS ),并试图说服我试图通过ODBC连接,当我清楚地声明它是通过连接字符串时。

如果这与此相关,下面是关于我如何使用连接字符串的C#代码,尽管我不认为这是我个人的原因:

代码语言:javascript
复制
        public List<string> GetEffectByID(int id)
        {
            List<string> results = new List<string>();
            SqlConnection conn;
            string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

            conn = new SqlConnection(connectionString);

            try
            {
                using (SqlCommand command = new SqlCommand("getFxById", conn) { CommandType = CommandType.StoredProcedure })
                {
                    conn.Open();
                    using (SqlDataReader dr = command.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            results.Add(dr["myColumn"].ToString());
                        }
                    }
                    conn.Close();
                    return results;
                }
            } catch(Exception e)
            {
                if(conn.State == ConnectionState.Open) conn.Close();
                return new List<string>() { e.ToString() };
            }
        }

此存储过程肯定存在于我的数据库中,并且在phpMyAdmin中工作。

在整个过程中,有什么是我错过的吗?当我的视图调用函数时,我希望它能够连接并运行存储过程。尽管如此,使用Plesk/InterServer提供的方法,它仍然声称没有找到/访问服务器。当我尝试使用我创建的连接字符串(不使用Integrated )时,它提供了以下错误消息:

System.Data.SqlClient.SqlException (0x80131904):用户“Shizuku”登录失败。在System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity标识处,SqlConnectionString connectionOptions、SqlCredential凭据、对象providerInfo、字符串newPassword、SecureString newSecurePassword、布尔值、SqlConnectionString userConnectionOptions、SessionData reconnectSessionData、DbConnectionPool池、String reconnectSessionData、布尔值、en36)在System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项处,en22#,对象,池,,)在池,en30#,选项,en33#,)在en3#,en38,( System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection )在System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal ),DbConnectionInternal #en3 20#1重试,en22#,#,DbConnectionOptions )(#,,#1重试,,DbConnectionOptions)( System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1重试) at System.Data.SqlClient.SqlConnection.Open() at (代码文件在这里) ClientConnectionId:953f6859-a48b-4f58-a0b8-bef0702911a3错误号:18456,状态:1,类:14

我觉得这个错误意味着我现在离解决这个问题更近了,但我并不完全确定。有什么是我没有尝试过的,或者是我犯了什么错误,只是我错过了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-29 17:26:28

我发现了错误:我的主机InterServer拒绝连接,声称"localhost连接是远程连接“。经过几个小时的来回支持,我终于要求退款。

在此之后,支持代理终于开始拼命地让它工作,通过更改我的Web.config来匆忙地寻找解决方案,因为他确信这是我的问题,而不是他的问题。但没有结果,他做了一个测试域,复制了我的文件/数据库。当然,他没有我的C#代码,这导致了对象创建语句(使用新关键字)的“对象未设置为引用”错误。最后,他创建了一个PHP文件,该文件字面上写着“连接成功”,里面没有实际的代码,然后给我发了一个链接,声称“错误不在服务器端,明白吗?”

解决我的问题的方法是不从InterServer购买共享主机,甚至可能不使用整个InterServer。他们的支持是可怕的,他们采用了这种阴暗面的策略,让客户在30天的退货期后进行故障排除。买家要小心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56330115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档