Есть такая вот проблема. На одном из серверов есть сайт, есть база. Там что php, что mysql старые, работают нормально. Есть другой сервер. Где все новое. Необходима как-то законектиться с нового сервера к старой базе. При этом менять и обновлять хэш пароля на новый нельзя. Можно это как-то сделать без установки древних версий php?
ПДО пишет ошибку SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file
все решения найденные в поисковиках сводятся к обновлению хэша в самой базе. Можно как-то без этого обойтись?
я, наверно, не совсем точно описал обстоятельства. Есть база, к ней есть доступы. Есть сайт, который работает с этой бд.
элементарный код для соединения с базой выдает ошибку, которая выше. Нужно подсоединиться к этой базе. Делать какие-то действия на самом сервере я не могу. Я могу работать только с новым сервером.
Насколько старая MySQL, какая конкретно версия? Если это всё же 4.1 или выше, но просто использующая старую авторизацию. То самый простой вариант завести еще одного юзера с доступом к нужной базе и новой авторизацией, и с нового сайта использовать этого нового юзера, в то время как старые скрипты будут ходить под старым юзером.
Если нет возможности ничего менять на старом серваке. То тогда самое простое, изменить настройки PHP на новом сервере, чтобы использовался libmysql, вместо mysqlnd.
Можно сделать систему общения (через хмл) тогда старый будет работать как и работал, а новый будет конектиться к старой базе по хмл, если нужно только проверить правильно ли ввел пользователь пароль.
но я б еще сделал так:
— если пользователь еще не получил новый пароль — конектим к старой, если проходит успешно — в новой БД пользователю генерировать правильный пароль и уже последующие конекты делать по новой БД
не обязательно XML. Возможно (не знаю конкретного кода) легче будет написать прокладочку, которая с определённого (нового) сервера будет получать запросы и выдавать ответы. Такой себе ретранслятор. А тем временем постепенно переводить данные на новую бд.
Если сложно, то лучше построить радужную таблицу для той версии и «подобрать пароли» и собственно перенести все узкие места в новую бд.
А лучше написать всем пользователям письмо с просьбой заменить пароль и обновить хеши в новой.
просто у меня на игровом проекте — авторизация идет по хмл с центральным сервером за него и первого вспомнил.
А вот проверка для дилеров — возможности оплатить игрка идет по «точке доступа» они просто на «определенный адрес» шлют партию переменных — их принимаешь и возвращаешь ответ.
А лучше написать всем пользователям письмо с просьбой заменить пароль и обновить хеши в новой.
По опыту знаю что можно получить много негодования… если пользователь «не получил, забил, или еще чтото с письмом» то потом получишь много гневных писем на сапорт «Не могу зайти в проект»