MySQL: не удалось войти в систему для пользователя - PullRequest
0 голосов
/ 27 мая 2019

Я попытался подключиться к моей базе данных SQL, размещенной на Plesk, с помощью InterServer с использованием C # ASP.NET MVC.Несмотря на многочисленные усилия, он никогда не хочет подключиться.Что я делаю не так?

Я несколько раз пытался изменить строку подключения.Служба поддержки Plesk и InterServer просит меня развернуть мой код и получить доступ к базе данных через localhost.В связи с этим я попробовал следующие строки подключения:

"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;"

Я попытался заменить «Сервер» на «Источник данных», среди других изменений ключевых слов.Я также попытался установить для Trusted_Connection значение true и false, а для Integrated Security - true и false.Кажется, когда я пытаюсь установить для них значение true, приложение пытается войти в систему, используя мое имя пользователя Plesk, а не идентификатор пользователя, указанный в строке подключения.Этот пользователь не связан с базой данных, и я не могу связать ее с панелью управления Plesk, насколько мне известно.

Я также попытался использовать строку подключения по умолчанию на панели управления Plesk наряду с несколькими изменениями вуказанные строки подключения, одна из которых даже предоставлена ​​поддержкой InterServer, поскольку они подозревают ошибку в моих строках подключения.Вот эти строки:

"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 # о том, как я использую строку подключения, хотя я не чувствую, что это является причиной лично:

        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

Есть ли что-то, что я пропустил на протяжении всего этого процесса?Я ожидаю, что он сможет подключиться и запустить хранимую процедуру, когда мой View вызывает функцию.Несмотря на это, используя методы, предоставленные Plesk / InterServer, он утверждает, что сервер не был найден / недоступен.Когда я пытаюсь использовать созданные мной строки подключения (без использования Integrated Security), вместо этого выдается следующее сообщение об ошибке:

System.Data.SqlClient.SqlException (0x80131904): Ошибка входа для пользователя 'Shizuku'.на System.Data.SqlClient.SqlInternalConnectionTds..ctor (идентичность DbConnectionPoolIdentity, SqlConnectionString connectionOptions, SqlCredential учетными данными, объект providerInfo, Строка новый_пароль, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool бассейн, String, Boolean, маркер доступа applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager) при System.Data.SqlClient.SqlConnectionFactory.CreateConnection (варианты DbConnectionOptions, DbConnectionPoolKey poolKey, объект poolGroupProviderInfo, DbConnectionPool бассейн, DbConnection owningConnection, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnectionPool бассейн, DbConnection owningObject, варианты DbConnectionOptions,DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) при System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, булевой allowCreate, булевой onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal & connection) в System.Data.ProviderBase.DbConnectionPool.TryGetConnection (DbConnection owningObject, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1 повторная попытка, DbConnectionOptions userOptions, DbConnectionOptions userOptions, Внутренняя взаимосвязь внутрисетевого соединения., DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 повтор, DbConnectionOptions userOptions) в System.Data.SqlClient.SqlConnection.TryOpenInner (TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1 повтор) в System.Data.SqlClient.SqlConnection.Open () в (код файла был здесь) ClientConnectionId: 953f6859-a48b-4f58-a0b8-bef0702911a3 Номер ошибки: 18456, состояние: 1, класс: 14

Мне кажется, что эта ошибка означает, что я сейчас ближе к решению проблемы, но я не совсем уверен.Есть ли что-то, что я не пробовал или какая-то ошибка, которую я просто пропустил?

1 Ответ

0 голосов
/ 29 мая 2019

Я обнаружил ошибку: мой хост InterServer отклонял соединение, утверждая, что «локальное соединение было удаленным».После нескольких часов работы службы поддержки я наконец-то запросил возмещение.

После этого агент службы поддержки наконец начал отчаянно пытаться заставить его работать, пытаясь найти решение, изменив мой Web.config по мере того, как онбыл убежден, что это моя проблема, а не его.Безрезультатно он сделал тестовый домен и скопировал мои файлы / базу данных.Конечно, у него не было моего кода на C #, и это привело к ошибке «Объект не задан как ссылка» для оператора создания объекта (с использованием нового ключевого слова).В качестве последнего средства он создал файл PHP, который буквально читал «Соединение установлено», и в нем не было действительного кода, а затем отправил мне ссылку на него, утверждая, что «ошибка не на стороне сервера, видите?»

Решением моей проблемы было не покупать виртуальный хостинг у InterServer и, возможно, даже не идти с InterServer в целом.Их поддержка ужасна, и они применяют подобные тенистые тактики, чтобы клиенты не выявляли неисправности после 30-дневного периода возврата денег.Покупатель остерегается.

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