【发布时间】:2012-01-18 21:04:30
【问题描述】:
我正在 XAMPP/WinXP 上运行 WordPress 的本地副本以进行开发,但想保持与远程数据库的连接。无论我尝试什么,我都会不断收到“建立数据库连接时出错”。
在同一台 PC 上,我可以使用任意数量的 mySQL 客户端连接到远程 mySQL 数据库,并且在 mySQL 端,用户和数据库都设置为接受来自任何通配符域的传入请求。我还可以从我的 PC 轻松 ping 远程数据库服务器(虽然我不知道如何从 WITHIN XAMPP 中执行此操作)。
XAMPP 是不是它自己的小宇宙,无法到达外界?还是有什么我明显忽略的东西让我无法连接?
错误
Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:553) in C:\xampp\htdocs\dbtest.php on line 5
Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in C:\xampp\htdocs\dbtest.php on line 5
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
编辑
感谢@Michael 建议我创建一个简单的连接脚本,以便我可以更好地了解引发的实际错误。这表明它与 mySQL 中的 old_password 设置有关。有关如何解决此问题的完整说明,请参阅下面的答案。
这是我放在xampp\htdocs 文件夹中并进行测试的测试脚本:
<?php
$mysqli = new mysqli('my.server.address', 'user_name', 'password', 'database_name');
if ($mysqli->connect_error){
die ("Connect error: " . $mysqli->connect_error );
}
【问题讨论】:
-
您在 wordpress 环境中从哪里得到错误?您是否尝试创建一个带有 mysql 连接的简单 index.php 来检查您是否真的有 mysql 连接问题?
-
我发布了这些错误:警告:mysql_connect() [function.mysql-connect]:C:\xampp\htdocs\dbtest.php 中的数据过早结束 (mysqlnd_wireprotocol.c:553)第 5 行警告:mysql_connect() [function.mysql-connect]:OK 数据包比第 5 行 C:\xampp\htdocs\dbtest.php 中预期的短 1 个字节警告:mysql_connect() [function.mysql-connect]: mysqlnd 无法使用旧的不安全身份验证连接到 MySQL 4.1+
-
这很奇怪,因为如果我在远程数据库的计算机上运行相同的简单脚本,一切都会正常连接,而且我看不到任何关于“不安全身份验证”的信息
-
我应该指出这个错误是不正确的,因为密码是加密的并且是正确创建的。只有在 XAMPP 上运行的 PHP 认为由于某种原因它没有被加密。
标签: mysql xampp remote-access