Странна грешка при опит за свързване с база данни

През последния ден или повече не мога да се свържа с база данни чрез PHP. Ето как изглежда моят код за свързване с базата данни

$con = mysqli_connect("localhost","root","password","database"); И тук е странната грешка.

PHP Предупреждение: mysqli_connect(): (HY000/1045): Достъпът е отказан за потребител 'user'@'localhost' (използване на парола: YES) в - на ред 2

Обикновено бих получил тази грешка, ако идентификационните данни са неправилни, но използвах GUI и тествах връзката с точните идентификационни данни, което следователно означава, че това не е проблемът. Току-що започнах произволно да получавам тази грешка и рестартирах компютъра си, преинсталирах 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
съжалявам, че питам, но вашето db име е s. Можете също така да проверите и да се уверите, че съществува, тъй като не виждам нищо нередно във вашия низ за връзка и предполагам, че root има достатъчно привилегии в базата данни. - person Keith Mifsud; 25.04.2014
comment
Да, това е s. Също така успях успешно да се свържа с него чрез GUI. И да, 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

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