MySqli не может подключиться к локальному хосту

У меня есть эта строка кода:

$mysqli = new mysqli("localhost", "user", "pass", "db");

Я использую XAMPP для Apache и MySQL. Если я использую строку выше, она выдает следующую ошибку:

Warning: mysqli::mysqli(): (HY000/1045): Access denied for user 'user'@'localhost' (using password: YES) in C:\xampp\htdocs\xo\php\connect.php on line 2
Failed to connect to MySQL: (1045) Access denied for user 'user'@'localhost' (using password: YES)
Warning: main(): Couldn't fetch mysqli in C:\xampp\htdocs\xo\php\connect.php on line 6

То же самое, если я заменю локальный хост на 127.0.0.1 (я пробовал). Но если я использую свой внутренний сетевой IP-адрес (в данном случае 192.168.1.101) вместо локального хоста, он успешно подключается.


person Tenescu Andrei    schedule 15.07.2013    source источник
comment
Вы не предоставили доступ user@localhost к своему серверу MySQL, но сделали это для [email protected]. Просто добавьте дополнительные привилегии   -  person    schedule 15.07.2013
comment
Подстановочные знаки для доступа, по-видимому, не позволяют использовать localhost или 127.0.0.1. Это либо локальное, либо внешнее, но не то и другое одновременно. Настройка доступа к локальному хосту решила проблему.   -  person ndm13    schedule 05.03.2015


Ответы (6)


Попробуйте это:

$mysqli = new mysqli("localhost", "user", "pass", "db", 3306);
                                                        port
person lgabster    schedule 17.02.2014

Я получил ошибку:

Предупреждение: mysqli_connect(): (HY000/1045): Доступ запрещен для пользователя 'dinesh'@'localhost' (с использованием пароля: YES) в C:\xampp...............

Я заменил localhost своим IP-адресом, и наконец-то он заработал в Windows 10.

person kcmaharshi    schedule 29.04.2016
comment
Странно, но это сработало! Пробовал localhost и 127.0.0.1, но, как ни странно, никакой радости... - person SharpC; 30.06.2017

у тебя проблемы с параметрами

$mysqli = new mysqli($localhost, $user, $pass, $db);

$localhost, $user, $pass, $db (these params should be consistent)
person vitor_gaudencio_oliveira    schedule 25.08.2014

После обновления с php5 до php7 та же проблема застряла у меня на 2 дня, и, наконец, я узнал, что это связано с тем, что при настройке php.ini вам также необходимо определить местоположение сокета для mysqli. Исходный mysql устарел после php5.5, поэтому после обновления необходимо добавить mysqli.default_socket помимо mysql.default_socket для его расположения сокета.

Просто нужно убедиться, что в php.ini есть следующие строки:

mysqli.default_socket = /путь к/mysql.sock mysql.default_socket = /путь к/mysql.sock

person Jack Chen    schedule 13.10.2018

попробуйте следующее (ответ основан на официальном документе https://www.php.net/manual/en/mysqli.quickstart.connections.php):

$mysqli = новый mysqli(127.0.0.1, пользователь, пароль, БД);

person Adev    schedule 18.03.2021
comment
Не могли бы вы объяснить немного больше? В чем разница с командой OP? - person Paul Rey; 18.03.2021

Я думаю, что это должно быть:

$mysqli = new mysqli($localhost, $user, $pass, $db);
person augustov    schedule 02.04.2014
comment
Тот же ответ, что и этот, уже опубликованный. - person Syscall; 18.03.2021