我有一个基于 Wordpress 的日志,托管在 Dreamhost 上。我在 Snow Leopard 上,我想安装本地站点,它将连接到我的远程数据库。但是,这不起作用,我收到此错误:
mysqlnd cannot connect to MySQL 4.1+ using old authentication
我没有尝试在 Leopard 中这样做,所以我在 SL 中不是新事物,也不是 Leopard 中的错误。
如何解决/解决这个问题?
我有一个基于 Wordpress 的日志,托管在 Dreamhost 上。我在 Snow Leopard 上,我想安装本地站点,它将连接到我的远程数据库。但是,这不起作用,我收到此错误:
mysqlnd cannot connect to MySQL 4.1+ using old authentication
我没有尝试在 Leopard 中这样做,所以我在 SL 中不是新事物,也不是 Leopard 中的错误。
如何解决/解决这个问题?
我已经解决了这个问题。这个问题确实是由于 Snow Leopard 默认使用 mysqlnd 作为它附带的 PHP 5.3 的模块,而不是 Dreamhost。该模块断然拒绝使用 OLD_PASSWORD 哈希与服务器连接。
唯一的解决方案(因为我无法更改共享主机上的 MySQL 设置)是重新编译您自己的 PHP,它不会使用 mysqlnd,而是使用 mysql/mysqli。我花了 3 小时才弄清楚正确的 ./configure 以使其正常工作(我在这方面还很不熟练,所以它被碰运气了)。通过网络搜索,各种选项适用于不同的人。不知道这项工作或其他工作,它确实对我有用:
获取libpng并编译,安装到/usr/local/libpng
根据 hivelogic.com 说明编译最新的 MySQL
设置为使用 64 位
export MACOSX_DEPLOYMENT_TARGET=10.6 \
CFLAGS="-arch x86_64" \
CXXFLAGS="-arch x86_64"
使用它来配置 PHP(我使用 5.2.11,只要它是 5.x,对我来说并不重要)
./configure --prefix=/usr/local/php5 \ --mandir=/usr/share/man\ --infodir=/usr/共享/信息\ --sysconfdir=/私人/等\ --with-apxs2=/usr/sbin/apxs \ --启用-cli \ --with-libxml-dir=/usr\ --with-openssl=/usr\ --with-kerberos=/usr\ --with-zlib=/usr\ --启用-bcmath \ --with-bz2=/usr\ --启用日历\ --with-curl=/usr\ --启用-exif \ --启用-ftp \ --with-gd \ --with-jpeg-dir=/usr/local/libjpeg \ --with-png-dir=/usr/local/libpng \ --启用-gd-本机-ttf \ --with-ldap=/usr\ --with-ldap-sasl=/usr\ --启用mbstring \ --启用-mbregex \ --with-pdo-mysql=/usr/local/mysql\ --with-mysql=/usr/local/mysql\ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-mysql-sock=/tmp/mysql.sock \ --with-iodbc=/usr\ --启用-shmop \ --with-snmp=/usr\ --启用肥皂\ --启用套接字\ --启用-sysvmsg \ --启用-sysvsem \ --启用-sysvshm \ --with-xmlrpc \ --无图标\ --with-xsl=/usr
同样,我是这一切的新手,只需要 PHP 来运行本地 wordpress,所以使用风险自负。
您确定 Dreamhost 甚至可以实现这一点吗?许多托管公司只允许本地应用程序连接到托管的 mysql。你可以试试
telnet thehost 3306
看看你是否得到Connection denied。如果这样做,那么您将需要ssh
访问权限和隧道,或其他类型的 VPN 解决方案。
正如 DigitalRoss 所说,Dreamhost 很可能不允许远程连接,因为以这种方式通过 Internet 公开数据库会带来巨大的安全风险。
相反,我建议您在 Dreamhost 空间中放置某种脚本来获取数据并在您确实需要时从本地主机调用脚本。
两种方法是通过 SOAP 或 httprequest。如果可能的话,我发现 SOAP 是更好的解决方案,因为远程数据传输是 web 服务的目标之一。
我同意您的问题实际上与雪豹无关,而是与 Dreamhost 有关。如果他们让你做你想做的事,我会感到非常惊讶。如果您尝试在本地服务器上进行测试,您可以做的是在您的 wordpress 安装上设置备份。我每周使用 WordPress 数据库备份来备份博客的数据库,并将备份通过电子邮件发送给我。