我搜索了 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 数据库设置为接受远程连接。如果有人知道如何改变这一点,那就太好了!)
有人有主意吗?
编辑:端口已打开
我在同事的机器上的 Windows 防火墙上打开了端口 3306。
现在我出现了以下错误:
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 文件夹),这会很困难。
编辑:找到 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 安装时拒绝访问。
现在我已经连接上了,但是我通过 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
。
当你花很长时间去寻找一件愚蠢的事情时,你会感到很讨厌。
希望这能帮助其他想要在未来做同样事情的人。
答案1
在没有任何附加信息的情况下,我最好的猜测是服务器不允许远程连接。这可能由多种原因造成
- 您的同事的计算机有防火墙阻止流量。您可以尝试禁用它以快速解决问题
MySQL 实例未设置为允许远程连接。您可以尝试远程登录到您朋友的计算机,看看它是否允许流量。
远程登录 192.168.100.32 3306
这也可能是一个权限问题 - 请参阅此链接可能的原因