Странная ошибка при попытке подключения к базе данных

В течение последнего дня или около того я не могу подключиться к базе данных через PHP. Вот как выглядит мой код подключения к базе данных

$con = mysqli_connect("localhost","root","password","database"); А вот и странная ошибка.

Предупреждение PHP: mysqli_connect(): (HY000/1045): доступ запрещен для пользователя 'user'@'localhost' (с использованием пароля: YES) в строке 2

Обычно я получаю эту ошибку, если учетные данные неверны, но я использовал графический интерфейс и проверил соединение с точными учетными данными, что означает, что проблема не в этом. Я просто начал случайно получать эту ошибку и перезагрузил свой компьютер, переустановил MySQL и перенастроил сервер. Я также пробовал 127.0.0.1 вместо localhost Я на localhost, поэтому у меня есть полный контроль почти над всем, и я не возился с что-либо, вызывающее эту проблему. Любые идеи?


person Idris    schedule 24.04.2014    source источник


Ответы (3)


По какой-то причине функция пытается подключиться, используя пользователя «user» вместо «root».

Вы можете продолжить отладку, добавив ссылку на ошибку:

$con= mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($con));

person Keith Mifsud    schedule 24.04.2014
comment
В вашем коде есть опечатка... должно быть mysqli_error($con) вместо mysqli_error($link) - person Hackerman; 25.04.2014
comment
Я имею в виду PHP Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in - on line 2 PHP Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in - on line 2 - person Idris; 25.04.2014
comment
извините быстро скопировал и вставил. сейчас отредактировал пост. Вы получили лучшую ошибку? - person Keith Mifsud; 25.04.2014
comment
не могли бы вы вставить соединение как есть. Я предполагаю, что вы передаете данные соединения как переменные и что одна из них возвращает 0/1 (логическое значение) вместо значения. - person Keith Mifsud; 25.04.2014
comment
Вот это $con= mysqli_connect("localhost","root","alistar123","s") or die("Error " . mysqli_error($con)); - person Idris; 25.04.2014
comment
извините за вопрос, но ваше имя БД s. Также вы можете проверить и убедиться, что он существует, поскольку я не вижу ничего неправильного в вашей строке подключения, и я предполагаю, что у root достаточно прав в базе данных. - person Keith Mifsud; 25.04.2014
comment
Да, это s. Я также смог успешно подключиться к нему через графический интерфейс. И да, root имеет достаточно привилегий - person Idris; 25.04.2014
comment
вы можете попробовать использовать: $con= new mysqli('localhost','root','alistar123','s'); работал на Linux-боксе. - person Keith Mifsud; 25.04.2014

Возможно, проблема в конфигурации сервера mysql.

Можно попробовать сменить пароль и после сбросить привилегии.

Чем перезапустить mysql!

Надеюсь это поможет! До свидания.

person Marco Chirico    schedule 24.04.2014

У меня была та же проблема, что и в заголовке этого вопроса, поэтому, если кто-то еще погуглит по этому вопросу и захочет запустить MySql в режиме «skip-grant-tables» в Windows, вот что я сделал.

Остановите службу MySQL с помощью инструментов администратора, Службы.

Измените файл конфигурации my.ini (при условии, что пути по умолчанию)

C:\Program Files\MySQL\MySQL Server 5.5\my.ini

В РАЗДЕЛЕ СЕРВЕРА в разделе [mysqld] добавьте следующую строку:

skip-grant-tables

так что у вас есть

# SERVER SECTION
# ----------------------------------------------------------------------
#
#The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
[mysqld]

skip-grant-tables

Запустите службу снова, и вы сможете войти в свою базу данных без пароля.

person mystique    schedule 24.04.2014