【问题标题】:Snow Leopard: connect from local wordpress to remote dbSnow Leopard:从本地 wordpress 连接到远程数据库
【发布时间】:2010-11-29 15:30:08
【问题描述】:

我有一个基于 Wordpress 的日志,托管在 Dreamhost 上。我在 Snow Leopard 上,我想安装本地站点,它将连接到我的远程数据库。但是,这不起作用,我收到此错误:

mysqlnd cannot connect to MySQL 4.1+ using old authentication

我没有尝试在 Leopard 中执行此操作,所以我在 SL 中不是新事物,也不是 Leopard 中的错误。

如何解决/解决这个问题?

【问题讨论】:

  • 您能否提供更多信息,例如您正在使用 SSH 隧道?
  • 不,没什么。直接访问 MySQL 端口。我可以使用 MySQL Administrator 访问服务器,但是从 PHP(Wordpress)它失败并显示上面的错误消息。我猜这是 SL 部分的一些安全更改,我需要弄清楚要更改什么才能恢复。我不需要额外的安全麻烦,我通过其他方式保护自己。
  • 对于仍然通过搜索进入该主题的人,就像我今天所做的那样:选择的答案现在可能已经过时了。 Dreamhost 的一名员工现在说:“我们已经切换到更新版本的 MySQL 并切换到新的密码格式。你应该不再需要做任何额外的事情了。” discussion.dreamhost.com/thread-123746.html

标签: php mysql wordpress osx-snow-leopard


【解决方案1】:

我已经解决了这个问题。 这个问题确实是由于 Snow Leopard 默认使用 mysqlnd 作为它随附的 PHP 5.3 的模块,而不是 Dreamhost。该模块断然拒绝使用 OLD_PASSWORD 哈希与服务器连接。

唯一的解决方案(因为我无法更改共享主机上的 MySQL 设置)是重新编译您自己的 PHP,它不会使用 mysqlnd,而是使用 mysql/mysqli。我花了 3 小时才找出正确的 ./configure 以使其正常工作(我在这方面还很不熟练,所以它被碰运气了)。通过网络搜索,各种选项适用于不同的人。 不知道这项工作或其他工作,它确实对我有用:

  1. 获取 libjpeg 并编译,安装到 /usr/local/libjpeg
  2. 获取libpng并编译,安装到/usr/local/libpng

  3. 按照 hivelogic.com 的说明编译最新的 MySQL

  4. 设置为使用 64 位

    export MACOSX_DEPLOYMENT_TARGET=10.6 \
    CFLAGS="-arch x86_64" \
    CXXFLAGS="-arch x86_64"
    
  5. 使用它来配置 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,所以使用风险自负。

【讨论】:

    【解决方案2】:

    您确定 Dreamhost 甚至可以实现这一点吗?许多托管公司只允许本地应用程序连接到托管的 mysql。你可以试试

    telnet thehost 3306
    

    看看你是否得到连接被拒绝。如果您这样做,那么您将需要ssh 访问权限和隧道,或其他类型的 VPN 解决方案。

    【讨论】:

    • 它有效。我得到“连接到 XX”,其中 XX 是我的数据库主机名。我并不感到惊讶,我可以从我需要的任何地方轻松访问此服务器(我通过 DH 面板授予对我需要的任何 IP/主机的访问权限)。我认为这与 SL 使用 mysqlnd 进行访问(通过 PHP)这一事实有关,这似乎完全拒绝使用普通的旧密码。
    【解决方案3】:

    正如 DigitalRoss 所说,Dreamhost 很可能不允许远程连接,因为以这种方式通过 Internet 公开数据库会带来巨大的安全风险。

    我建议您在 Dreamhost 空间中放置某种脚本来获取数据并在您确实需要时从本地主机调用脚本。

    有两种方法是通过 SOAP 或 httprequest。 如果可能的话,我发现 SOAP 是更好的解决方案,因为远程数据传输是 Web 服务的目标之一。

    【讨论】:

      【解决方案4】:

      我同意您的问题实际上与雪豹无关,而是与 Dreamhost 有关。如果他们让你做你想做的事,我会感到非常惊讶。如果您尝试在本地服务器上进行测试,您可以做的是在您的 wordpress 安装上设置备份。我每周使用 WordPress 数据库备份来备份博客的数据库,并将备份通过电子邮件发送给我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-21
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多