Я только начал использовать WAMP для проекта PHP, и я получаю следующие ошибки, связанные с этой строкой кода:
$link=mysql_connect("localhost","myuser","mypas");
Я прочитал, что мне пришлось снова выполнить ПАРОЛЬ SET с моим старым паролем, но он все равно не работает после перезапуска всех служб. Я использую PHP 5.3.4 и MySQL 5.1.53 Любая помощь? БЛАГОДАРЯ
Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in C:\wamp\www\CDE\includes\baseDatos.php on line 5 Call Stack 1 0.0002 667312 {main}( ) ..\index.php:0 2 0.0008 682416 include( 'C:\wamp\www\CDE\includes\seguridad.php' ) ..\index.php:2 3 0.0010 690984 include( 'C:\wamp\www\CDE\includes\baseDatos.php' ) ..\seguridad.php:2 4 0.0014 692368 mysql_connect ( ) ..\baseDatos.php:5 ( ! ) Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in C:\wamp\www\CDE\includes\baseDatos.php on line 5 Call Stack 1 0.0002 667312 {main}( ) ..\index.php:0 2 0.0008 682416 include( 'C:\wamp\www\CDE\includes\seguridad.php' ) ..\index.php:2 3 0.0010 690984 include( 'C:\wamp\www\CDE\includes\baseDatos.php' ) ..\seguridad.php:2 4 0.0014 692368 mysql_connect ( ) ..\baseDatos.php:5 ( ! ) Warning: mysql_connect() [function.mysql-connect]: 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 in C:\wamp\www\CDE\includes\baseDatos.php on line 5 Call Stack 1 0.0002 667312 {main}( ) ..\index.php:0 2 0.0008 682416 include( 'C:\wamp\www\CDE\includes\seguridad.php' ) ..\index.php:2 3 0.0010 690984 include( 'C:\wamp\www\CDE\includes\baseDatos.php' ) ..\seguridad.php:2 4 0.0014 692368 mysql_connect ( ) ..\baseDatos.php:5
У меня была такая же проблема, и я исправил ее с помощью запроса UPDATE:
UPDATE mysql.user SET Password = PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user';
Не знаю, почему, но пароль SET не работает.
Чтобы быть уверенным, что проблема в том, что я думаю, вы должны сделать этот запрос в базе данных mysql:
SELECT `user`.`Password` FROM `user` WHERE `user`.`User` = 'youruser' AND `user`.`Host` = 'yourhost'
если пароль не начинается с *, проблема в том, что у вас все еще есть старая подписка
EDIT _ Вот php-функция для создания действительного пароля для MYSQL (взята отсюда ):
function mysql_41_password($in) { $p=sha1($in,true); $p=sha1($p); return "*".strtoupper($p); }
Вы можете установить пароль вручную:
//newpwd is the passowr dgenerated in php UPDATE mysql.user SET Password = 'newpwd' WHERE Host = 'some_host' AND User = 'some_user'; FLUSH PRIVILEGES;
Вышеупомянутая проблема возникает из-за совместимости версий между PHP и MySQL. В основном это может произойти во время удаленного доступа к db.
Просьба проверить ваши версии PHP и MySQL.
Моей версией являются PHP-5.3.6 (локальная машина) и MySQL 5.1.56 (Live DB).
Мой MySQL размещен в реальном домене, и я сохранил свои PHP-файлы на локальной машине. Я столкнулся с такой же проблемой для паролей.
Затем я заменил свой XAMPP более старой версией, изменив мою версию PHP на 5.3.0. Теперь проблема была решена, и я могу получить доступ к live db из локального.
Если вы используете MySQL 4.1 + Попробуйте это
В командной строке MySQL
mysql> set old_passwords = 0;
mysql> set password for 'user'@'some.host.domain' = PASSWORD('new_pass');
mysql> set old_passwords = 1;
То, что вы подключаетесь к localhost, предполагает, что у вас, вероятно, нет сетевых проблем.
Первый хит в Google содержит 2 возможных причины / средства защиты.
Это сообщение появляется, когда вы используете PHP 5.3 … с базой данных MySQL, которая предназначена для использования с PHP 5.2. Я заметил, что когда я перешел на другую версию Uniform Server.
Если у вас нет доступа к базе данных и в основном используется это удаленное соединение для целей разработки (например, я), решение для этого состоит в том, чтобы иметь конфигурации с двумя версиями PHP (в настоящее время последний Uniform Server с PHP 5.2 … появляется быть 5.6b-Nano с PHP 5.2.13).