Подтвердить что ты не робот

"Не удалось подключиться: доступ запрещен для пользователя" root "@" localhost "(с использованием пароля: YES)" из функции php

Я написал некоторую функцию, используемую веб-страницей php, для взаимодействия с базой данных mysql. Когда я тестирую их на своем сервере, я получаю эту ошибку:

"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)" 

Я могу использовать их на своем компьютере (используя XAMPP), и я могу перемещаться по таблицам базы данных, используя командную строку на сервере. Тем не менее, веб-странице не удается подключиться. Я проверил пароль, но безрезультатно. Это правильно (в противном случае я не мог войти в MySQL из командной строки).

Вызов функции следующий:

$conn = new mysqli("localhost", "root", "password", "shop");

Должен ли я установить что-то на моем сервере? Спасибо

Редактировать: PHP версия 5.3.3-7 + squeeze1 mysql версия: 5.1.49-3 оба на Debian

4b9b3361

Ответ 1

Я решил так: Я вошел в систему с именем пользователя root

mysql -u root -p -h localhost

Я создал нового пользователя с

CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';

то я создал базу данных

CREATE DATABASE shop;

Я предоставил привилегии для нового пользователя для этой базы данных

GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';

Затем я вышел из корневого каталога и вошел в новый пользователь

quit;
mysql -u francesco -p -h localhost

Я перестроил свою базу данных с помощью script

source shop.sql;

И что это.. Теперь из php работает без проблем с вызовом

 $conn = new mysqli("localhost", "francesco", "some_pass", "shop");

Спасибо всем за ваше время:)

Ответ 2

Есть ли запись учетной записи пользователя в базе данных для root @localhost? В MySQL вы можете установить разные разрешения учетной записи пользователя хостом. Могут быть несколько разных учетных записей с тем же именем в сочетании с хостом, с которым они подключаются. Наиболее распространенными являются root @127.0.0.1 и root @localhost. Они могут иметь разные пароли и разрешения. Убедитесь, что root @localhost существует и имеет настройки, которые вы ожидаете.

Я готов поспорить на основании ваших объяснений, что это проблема. Подключение с другого ПК использует другую учетную запись, чем root @localhost, и в командной строке, которая, я думаю, подключается с помощью [email protected]

Ответ 3

Из того, что вы сказали до сих пор, это звучит как проблема, когда драйвер MySQL в PHP5.3 не может подключиться к более старой версии MySQL версии 4.1. Посмотрите http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx

Здесь есть аналогичный вопрос с некоторыми полезными ответами, Невозможно подключиться к MySQL 4.1+ с помощью старой проверки подлинности

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

Это приведет к возврату 16 для учетных записей со старыми паролями и 41 для учетных записей с новыми паролями (и 0 для учетных записей без пароля вообще, возможно, вы захотите позаботиться об этих же). Либо используйте инструменты управления пользователями в интерфейсе MySQL (если они есть), либо

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges

Ответ 4

Здесь может быть?

Я считаю, что код должен быть:


$connect = new mysqli("host", "root", "", "dbname");

потому что root не имеет пароля. (using password: YES) говорит "вы используете пароль с этим пользователем"

Ответ 5

У меня тоже была эта проблема. Но это было по другой причине. Мой пароль начинался с символа $... например. $MyPassword Я изменил его на #MyPassword, и проблема решена.

Ответ 6

Измените свои привилегии на PHPmyAdmin (WAMP), обратите внимание, что ваш пароль и имя пользователя не были созданы. Так что создайте или отредактируйте его, чтобы он мог работать с вашим SQL-соединением в вашем php. Надеюсь, он работает.

Ответ 7

Совет:

закомментируйте файл pid и socket, если вы не можете подключиться к серверу. mysql может подключаться к некорректному файлу pid и/или socket, поэтому, когда вы пытаетесь подключиться к серверной командной строке, он "смотрит" в неправильном файле pid/socket...

### comment out pid and socket file, if you can't connect to server..
#pid-file=/var/run/mysql/mysqld.pid #socket=/var/lib/mysql/mysql.sock

Ответ 8

Скорее всего, он не правильно идентифицирует вашего пользователя. корень @локальный. Выберите версию Mysql, которую использует ваш MAMP.

/Applications/MAMP/Library/bin/mysqldump -uroot -p db_name > test_db_dump.sql

Я на самом деле написал псевдоним на своем компьютере, поэтому мне не нужно помнить, как добраться до каталога bin.

alias mysqldumpMAMP='/Applications/MAMP/Library/bin/mysqldump'

Что позволяет мне запускать это:

mysqldumpMAMP -uroot -p db_name > test_db_dump.sql

Вы можете сохранить псевдоним в своем профиле bash ~/.bash_profile или ~/.bash_rc

Ответ 9

Легко.

откройте панель управления xampp → Config → my.ini edit с помощью блокнота. Теперь добавьте это ниже [mysqld]

skip-grant-tables

Сохранить. Запустите Apache и MySQL.

Я надеюсь помочь вам

Ответ 10

Может быть, там пароль не установлен, и вы передаете пароль в качестве аргумента. Попробуйте пропустить аргумент пароля при подключении.

Ответ 11

Попробуйте инициализировать переменные и использовать их в объекте подключения:

$username ="root";
$password = "password";
$host = "localhost";
$table = "shop";
$conn = new mysqli("$host", "$username", "$password", "$table");

Ответ 12

Это не ошибка, это ваша ошибка, что вы пишете неправильный код в файле подключения. вы просто пишете как

$con = mysql_connect($host,$user,$password);

если ваш код записи worng, например

$con = mysql_connect($host,$password,$user);

то он показывает

Access denied for user ''@'localhost' (using password: YES)

так что продолжайте наслаждаться....