Snow Leopard: подключите локальный WordPress к удаленной базе данных - PullRequest
0 голосов
/ 19 сентября 2009

У меня есть журнал на основе Wordpress, размещенный на Dreamhost. Я на Snow Leopard и хотел установить локальный сайт, который будет подключаться к моей удаленной базе данных. Однако это не работает, и я получаю эту ошибку:

mysqlnd cannot connect to MySQL 4.1+ using old authentication

Я не пытался сделать это в Leopard, поэтому я не знаю, является ли это новинкой в ​​SL или была ошибкой в ​​Leopard.

Как решить / обойти это?

Ответы [ 4 ]

2 голосов
/ 28 октября 2009

Я решил это. Проблема действительно была вызвана тем, что 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. Скомпилируйте последнюю версию MySQL в соответствии с инструкциями hivelogic.com

  4. Установить для использования 64bit

    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/share/info \ 
    --sysconfdir=/private/etc \ 
    --with-apxs2=/usr/sbin/apxs \ 
    --enable-cli \ 
    --with-libxml-dir=/usr \ 
    --with-openssl=/usr \ 
    --with-kerberos=/usr \ 
    --with-zlib=/usr \ 
    --enable-bcmath \ 
    --with-bz2=/usr \ 
    --enable-calendar \ 
    --with-curl=/usr \ 
    --enable-exif \ 
    --enable-ftp \ 
    --with-gd \ 
    --with-jpeg-dir=/usr/local/libjpeg \ 
    --with-png-dir=/usr/local/libpng \ 
    --enable-gd-native-ttf \ 
    --with-ldap=/usr \ 
    --with-ldap-sasl=/usr \ 
    --enable-mbstring \ 
    --enable-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 \ 
    --enable-shmop \ 
    --with-snmp=/usr \ 
    --enable-soap \ 
    --enable-sockets \ 
    --enable-sysvmsg \ 
    --enable-sysvsem \ 
    --enable-sysvshm \ 
    --with-xmlrpc \ 
    --without-iconv \ 
    --with-xsl=/usr
    

Опять же, я новичок со всем этим, мне нужен PHP только для запуска локальной WordPress, так что используйте на свой страх и риск.

1 голос
/ 19 сентября 2009

Ты точно знаешь, что это возможно даже с Dreamhost? Многие хостинговые компании разрешают подключаться к размещенному MySQL только локальным приложениям. Вы можете попробовать

telnet thehost 3306

и посмотрите, получите ли вы Отказано в соединении . Если вы это сделаете, то вам потребуется ssh доступ и туннель, или какое-либо другое решение VPN.

0 голосов
/ 19 сентября 2009

Я согласен, что ваша проблема на самом деле не связана со снежным барсом, а с Dreamhost. Я был бы очень очень удивлен, если бы они позволили вам делать то, что вы собираетесь. Что вы можете сделать, если вы пытаетесь что-то протестировать на локальном сервере, так это настроить резервную копию вашей установки WordPress. Я использую Резервное копирование базы данных WordPress для резервного копирования базы данных по блогам еженедельно и по электронной почте мне резервную копию

0 голосов
/ 19 сентября 2009

Как сказал DigitalRoss, весьма вероятно, что Dreamhost не разрешит удаленные подключения, так как это представляет огромный риск для безопасности, чтобы таким образом раскрыть базу данных через Интернет.

Я бы порекомендовал вместо этого поместить какой-либо сценарий в пространство Dreamhost для извлечения данных и вызвать сценарий с локального хоста, если вам действительно нужно это сделать.

Два способа сделать это - через SOAP или httprequest. Я считаю, что SOAP - лучшее решение, если это возможно, так как удаленные транспорты данных - одна из вещей, для которых предназначались веб-сервисы.

...