Intereting Posts

«Не удалось подключиться: доступ запрещен для пользователя« 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

Я решил так: я вошел в систему с именем пользователя 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 

Я перестроил свою базу данных, используя скрипт

 source shop.sql; 

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

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

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

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

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

Из того, что вы сказали до сих пор, это звучит как проблема, когда драйвер 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 

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

Может быть?

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

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

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

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

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

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

НАКОНЕЧНИК:

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

  ### прокомментировать файл pid и socket, если вы не можете подключиться к серверу. 
# PID-файл = / вар / Работа / MySQL / mysqld.pid # Сокет = / вар / Библиотека / MySQL / mysql.sock

Скорее всего, он не правильно определяет вашего пользователя. корень @ локальный. Выберите версию 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

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

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

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

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

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

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

поэтому продолжайте пользоваться ….