Я написал некоторую функцию, используемую веб-страницей 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)
поэтому продолжайте пользоваться ….