Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend框架:身份验证,从SQLite切换时出现MySQL错误_Php_Mysql_Zend Framework - Fatal编程技术网

Php Zend框架:身份验证,从SQLite切换时出现MySQL错误

Php Zend框架:身份验证,从SQLite切换时出现MySQL错误,php,mysql,zend-framework,Php,Mysql,Zend Framework,我正在将我的应用程序从使用SQLite切换到MySQL。它可以与SQLite一起使用,但现在我已经将它改为使用MySQL,它就不起作用了。下面是我收到的错误消息: Message: SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using old authentication 这是什么意思 注意:我正在运行本地运行的Snow Leopard,试图访问远程数据库 它还在请求参数中将我的用户名和密码以纯文本形式转储到屏幕上,

我正在将我的应用程序从使用SQLite切换到MySQL。它可以与SQLite一起使用,但现在我已经将它改为使用MySQL,它就不起作用了。下面是我收到的错误消息:

Message: SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using old authentication
这是什么意思

注意:我正在运行本地运行的Snow Leopard,试图访问远程数据库


它还在请求参数中将我的用户名和密码以纯文本形式转储到屏幕上,这有点令人不安。

Andrew我认为您的MySQL客户端使用旧身份验证时存在问题

您应该确保您的PDO正在使用最后一个mysqlclient库

您可能希望先测试一个示例,以确保一切正常,然后再使用ZF

 $db = new PDO("mysql:host=$host;dbname=$database", 
            $username, $password);

在您对Usernamer/Password的评论中,Zend Framework文档指出,开发人员不应通过在生产和开发中设置不同级别的配置来向用户显示这些错误。还有。Andrew我想你的MySQL客户端使用旧的身份验证有问题

您应该确保您的PDO正在使用最后一个mysqlclient库

您可能希望先测试一个示例,以确保一切正常,然后再使用ZF

 $db = new PDO("mysql:host=$host;dbname=$database", 
            $username, $password);
在您对Usernamer/Password的评论中,Zend Framework文档指出,开发人员不应通过在生产和开发中设置不同级别的配置来向用户显示这些错误。是否有这样的功能,以及。

您是否正在运行PHP5.3?是新的PHP原生MySQL驱动程序(,并利用它,因此它不是一个新的API,而是三种不同的API与MySQL服务器通信的新方式)-是一篇关于
mysqlnd
的好文章

现在的问题是,您的MySQL服务器使用的是
mysqlnd
无法遵守的
mysqlnd
需要MySQL 4.1引入的新的41字节密码(因此您无法连接到MySQL服务器<4.1)。要更新用户表以使用新密码方案,您必须在MySQL服务器上使用命令,例如:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword');
这将更改密码方案,并允许您连接
mysqlnd
。Thomas Rabaix描述了完全相同的问题-仅供参考。

您正在运行PHP5.3吗?是新的PHP原生MySQL驱动程序(,并利用它,因此它不是一个新的API,而是三种不同的API与MySQL服务器通信的新方式)-是一篇关于
mysqlnd
的好文章

现在的问题是,您的MySQL服务器使用的是
mysqlnd
无法遵守的
mysqlnd
需要MySQL 4.1引入的新的41字节密码(因此您无法连接到MySQL服务器<4.1)。要更新用户表以使用新密码方案,您必须在MySQL服务器上使用命令,例如:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword');

这将更改密码方案,并允许您连接
mysqlnd
。Thomas Rabaix描述了完全相同的问题-仅供参考。

用这个来解决您的问题:)


祝你好运用这个来解决你的问题:)


祝您好运

DB用户名和密码是不应在生产服务器上显示错误的原因之一。不是数据库用户名/密码,而是我应用程序的用户登录凭据。另外,这不是在生产服务器上运行的。就在我的电脑上,处于开发模式。在生产模式下会关闭错误。DB用户名和密码是决不能在生产服务器上显示错误的原因之一。不是数据库用户名/密码,而是我应用程序的用户登录凭据。另外,这不是在生产服务器上运行的。就在我的电脑上,处于开发模式。错误在生产模式下被关闭。这不是在生产服务器上运行的。就在我的电脑上,处于开发模式。因此,在生产模式下,显示错误将被关闭。我的MySQL服务器是否旧了?还是我的PDO_老了?我的PDO_MYSQL是在Zend Framework中安装的,还是本地PHP安装的,还是本地MYSQL安装的?我在我的生产服务器上试用了这个应用程序,我没有发现问题。我需要在我的终端(本地)更新什么以避免再次发生此错误我认为您应该与wath LIBMYSQLCIENT检查您的PDO是否已编译,因为它未在生产服务器上运行。就在我的电脑上,处于开发模式。因此,在生产模式下,显示错误将被关闭。我的MySQL服务器是否旧了?还是我的PDO_老了?我的PDO_MYSQL是在Zend Framework中安装的,还是本地PHP安装的,还是本地MYSQL安装的?我在我的生产服务器上试用了这个应用程序,我没有发现问题。我需要在我的终端(本地)更新什么以避免再次发生此错误?我认为您应该向wath LIBMYSQLCIENT检查您的PDO是否已编译