Я просмотрел Google, пытаясь узнать, как это сделать, но по сути я хочу подключиться к базе данных MySQL моего коллеги для совместной работы над установкой Wordpress.
Мне не повезло, и я получаю сообщение об ошибке подключения:
Unable to connect to any of the specified MySQL hosts.
MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at Microsoft.WebMatrix.DatabaseManager.MySqlDatabase.MySqlDatabaseProvider.TestConnection(String connectionString)
at Microsoft.WebMatrix.DatabaseManager.IisDbManagerModuleService.TestConnection(DatabaseConnection databaseConnection, String configPathState)
at Microsoft.WebMatrix.DatabaseManager.Client.ClientConnection.Test(ManagementConfigurationPath configPath)
at Microsoft.WebMatrix.DatabaseManager.Client.DatabaseHierarchyInfo.EnsureLoaded()
Детали подключения скопированы из строки подключения моего коллеги, за исключением того, что сервер был изменен в соответствии с IP-адресом его машины.
Я не уверен, есть ли порт межсетевого экрана, который я должен открыть, или файл конфигурации, который мне нужно изменить, но пока мне не очень везет.
(Существует большая вероятность того, что по умолчанию web matrix / iis express не устанавливает базу данных mysql, которую он создает, для приема удаленных подключений. Если кто-нибудь знает, как это изменить, это было бы здорово!)
У кого-нибудь есть идеи?
Я открыл порт 3306 в брандмауэре Windows на машине моего коллеги.
Теперь у меня следующая ошибка:
Host 'DESKTOP019-PC' is not allowed to connect to this MySQL server
MySql.Data.MySqlClient.MySqlException (0x80004005): Host 'DESKTOP019-PC' is not allowed to connect to this MySQL server
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at Microsoft.WebMatrix.DatabaseManager.MySqlDatabase.MySqlDatabaseProvider.TestConnection(String connectionString)
at Microsoft.WebMatrix.DatabaseManager.IisDbManagerModuleService.TestConnection(DatabaseConnection databaseConnection, String configPathState)
at Microsoft.WebMatrix.DatabaseManager.Client.ClientConnection.Test(ManagementConfigurationPath configPath)
at Microsoft.WebMatrix.DatabaseManager.Client.DatabaseHierarchyInfo.EnsureLoaded()
Я думаю, мне нужно предоставить этому пользователю права на имя хоста, но, учитывая, что я не знаю, где находится база данных и как получить к ней доступ через командную строку (в программных файлах нет соответствующей папки MySQL), это будет сложно.
Находится в
Start > All Programs > MySQL > MySQL Server %version% > MySQL Command Line Client
http://forums.iis.net/t/1173668.aspx
После обнаружения клиента sql соединение было исправлено путем ввода следующей команды:
GRANT ALL PRIVILEGES ON databasename.* to ‘databaseuser’@'hostname' IDENTIFIED BY 'databasepassword';
http://31bit.com/technology/86-mysql-database/302-how-to-grant-remote-access-to-a-mysql-database
Спасибо DKNUCKLES за толчок порта. Я сходил с ума в поисках файлов конфигурации и прочего для IIS Express, но все, что потребовалось, - это открыть порт и предоставить пользователю разрешения!
Теперь я подключился, мне отказали в доступе через wordpress. Я получал сообщение «Ошибка установления соединения с базой данных», что было довольно расплывчатой ошибкой.
Я поискал и нашел страницу, на которой можно проверить соединение:
testconnection.php
<?php
$link = mysql_connect('databaseip_or_localhost', 'databaseuser', 'databasepassword');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
Я ввел правильные учетные данные, добавил страницу в свою установку WordPress и посетил ее.
Я получил сообщение:
Could not connect: Access denied for user 'wordpressuser457'@'DESKTOP019-PC' (using password: YES)
Оказалось, что я тоже неправильно написал имя пользователя (у меня был очень длинный день) - это должно было быть wordpress457user
НЕ wordpressuser457
.
Ненавижу, когда на поиск глупой вещи уходит много времени.
Надеюсь, это поможет всем, кто хочет сделать то же самое в будущем.
Без какой-либо дополнительной информации я могу предположить, что сервер не разрешает удаленные подключения. Это может быть вызвано любым количеством причин.
Экземпляр MySQL не настроен для разрешения удаленных подключений. Вы можете попробовать подключиться к компьютеру друзей по telnet и посмотреть, разрешает ли он трафик.
телнет 192.168.100.32 3306
Это также может быть проблема с разрешениями - см. эта ссылка по возможной причине