Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: mysqli_connect Ошибка несуществующего пользователя

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не возвращеет ошибку если пользователя нет
ekkl
Отправлено: 26 Ноября, 2013 - 23:33:36
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Не могу понять.

PS.Естественно, такого пользователя Mysql нет.
CODE (htmlphp):
скопировать код в буфер обмена
  1. object(mysqli)[1]
  2.   public 'affected_rows' => null
  3.   public 'client_info' => null
  4.   public 'client_version' => null
  5.   public 'connect_errno' => null
  6.   public 'connect_error' => null
  7.   public 'errno' => null
  8.   public 'error' => null
  9.   public 'error_list' => null
  10.   public 'field_count' => null
  11.   public 'host_info' => null
  12.   public 'info' => null
  13.   public 'insert_id' => null
  14.   public 'server_info' => null
  15.   public 'server_version' => null
  16.   public 'stat' => null
  17.   public 'sqlstate' => null
  18.   public 'protocol_version' => null
  19.   public 'thread_id' => null
  20.   public 'warning_count' => null

Не выводит никакой ошибки, но если сделать так
PHP:
скопировать код в буфер обмена
  1. $link = mysqli_connect('localhost', 'ghdguyetuqwyeq','somesomesome');
  2. var_dump($link);

То выводится ошибка.
CODE (htmlphp):
скопировать код в буфер обмена
  1. Access denied for user 'ghdguyetuqwyeq'@'localhost' (using password: YES)
  2. boolean false

Скажите, почему так? Или ткните носом, где я в мануале проглядел.
Получается, если не вводить пароль, то коннектится с любым пользователем. Так и должно быть, или это особенности Mysql?
 
 Top
alexiy
Отправлено: 26 Ноября, 2013 - 23:50:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 483
Дата рег-ции: Янв. 2011  


Помог: 6 раз(а)




ekkl
Получается, если не вводить пароль, то коннектится с любым пользователем. Так и должно быть, или это особенности Mysql?

а ты уверен, что он коннектиться?
 
 Top
ekkl
Отправлено: 27 Ноября, 2013 - 11:49:30
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Встречный вопрос: как узнать коннектится или нет?
В моем случае, при пустом пароле и любом пользователе mysqli_connect_error() возвращает пустую строку, а переменная, возвращенная из mysqli_connect() являет собой объект, содеожимое которог приведено выше, иное дело, что потом не выполняются никакие операции, появляется ошибка Accass denied
Коннект это, или нет?
 
 Top
DelphinPRO
Отправлено: 27 Ноября, 2013 - 12:13:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ekkl пишет:
Встречный вопрос: как узнать коннектится или нет?

прочитать документацию, посмотреть приводимые там примеры
http://us1.php.net/manual/ru/mys...li.construct.php


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
ekkl
Отправлено: 27 Ноября, 2013 - 13:08:25
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Цитата:
прочитать документацию, посмотреть приводимые там примеры

Хорошо,
$link = mysqli_connect('localhost', 'ghdguyetuqwyeq');
$link - объект,
mysqli_connect_error() возвращает пустую строку,
Коннект, или нет?

(Отредактировано автором: 27 Ноября, 2013 - 13:09:13)

 
 Top
DelphinPRO
Отправлено: 27 Ноября, 2013 - 14:55:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ekkl пишет:
Хорошо

Что хорошо? Если б прочитал, то уже знал бы что
ekkl пишет:
mysqli_connect_error() возвращает пустую строку

неверное утверждение. потому как четко написано:
Цитата:
Возвращаемые значения
Сообщение об ошибке. NULL, если ошибка отсутствует.


Еще мог бы узнать из мануала (если бы ЧИТАЛ!) что есть функция mysqli_connect_errno которая возвращает номер ошибки, либо 0 при отсутствии оных.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
ekkl
Отправлено: 27 Ноября, 2013 - 15:42:41
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Приплыли туда, откуда отчалили.
PHP:
скопировать код в буфер обмена
  1. $link = mysqli_connect('localhost', 'Такого_пользоателя_нет');

Вывод

Я уже писал, что mysqli_connect_error() возвращает NULL ВСЕГДА, если конектится без пароля. НЕЗАВИСИМО от того, существует пользователь, или нет.

(Отредактировано автором: 27 Ноября, 2013 - 15:43:51)

 
 Top
DelphinPRO
Отправлено: 27 Ноября, 2013 - 16:00:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Лицо-в-руках.jpg


Запустил ваш код:
PHP:
скопировать код в буфер обмена
  1. $link = mysqli_connect('localhost', 'Такого_пользоателя_нет');

вывод:
CODE (text):
скопировать код в буфер обмена
  1. Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'Такого_пользоателя_нет'@'127.0.0.1' (using password: NO) in W:\domains\test.local\PHP.php on line 14
  2. 1045

Где здесь ноль??? Код ошибки - 1045


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Мелкий Супермодератор
Отправлено: 27 Ноября, 2013 - 16:09:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




CODE (bash):
скопировать код в буфер обмена
  1. skornilov@test:~$ cat test.php
  2. <?
  3. $link = mysqli_connect('localhost', 'Такого_пользоателя_нет');
  4. var_dump(mysqli_connect_errno());
  5. skornilov@test:~$ php -f test.php
  6. int(0)
  7. skornilov@test:~$

Я ещё не разбирал, почему.


-----
PostgreSQL DBA
 
 Top
ekkl
Отправлено: 27 Ноября, 2013 - 17:09:49
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




DelphinPRO
А у меня 0!
-----
Удалось установить, что MySQL запущенная с консоли ведет себя подобным образом, т.е. если пользователь не существует и не указан пароль коннект без ошибок. А ошибка ACCESS Denied Выскакивет уже при попытке чтения-записи.
---
DelphinPRO, Версия php? И система?
CODE (htmlphp):
скопировать код в буфер обмена
  1. [ekkl@localhost ~]$ mysql --user=blabalbal
  2. Welcome to the MySQL monitor.  Commands end with ; or \g.
  3. Your MySQL connection id is 115
  4. Server version: 5.5.32 MySQL Community Server (GPL)
  5.  
  6. Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
  7.  
  8. Oracle is a registered trademark of Oracle Corporation and/or its
  9. affiliates. Other names may be trademarks of their respective
  10. owners.
  11.  
  12. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  13.  
  14. mysql> quit;
  15. Bye
  16.  

CODE (htmlphp):
скопировать код в буфер обмена
  1. [ekkl@localhost ~]$ mysql --user=blabalbal --pass=somesome
  2. ERROR 1045 (28000): Access denied for user 'blabalbal'@'localhost' (using password: YES)

(Отредактировано автором: 27 Ноября, 2013 - 17:13:02)

 
 Top
ekkl
Отправлено: 28 Ноября, 2013 - 17:31:08
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Неужели это только у меня и в Мелкий?
Куда хоть рыть-то?
--
Может модераторам лучше перенести эту тему в соответствующий раздел, так как это проблема не php, а самого мускула.
 
 Top
IllusionMH
Отправлено: 28 Ноября, 2013 - 17:36:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




ekkl, WAMP Server 2 тоже выдает 0
CODE (htmlphp):
скопировать код в буфер обмена
  1. D:\wamp\bin\php\php5.3.13>php -f test.php
  2. int(0)
  3.  
  4. D:\wamp\bin\php\php5.3.13>php -v
  5. PHP 5.3.13 (cli) (built: May 14 2012 02:50:59)
  6. Copyright (c) 1997-2012 The PHP Group
  7. Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
  8.     with Xdebug v2.2.0, Copyright (c) 2002-2012, by Derick Rethans


Вероятно, зависит от настроек сервера Огорчение
 
 Top
DelphinPRO
Отправлено: 28 Ноября, 2013 - 17:53:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




на локалке
Win8 x64, MySQL5.5.30, PHP5.3.22

на хостинге
Linux 2.6.18-348.12.1.el5 x86_64, MySQL5.1.54, PHP5.3.14

в обоих случаях ошибка 1045.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
retvizan
Отправлено: 29 Ноября, 2013 - 03:22:05
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Рекомендую посмотреть статью MySQL error 1045


Цитата:
4) Аккаунт с пустым именем пользователя трактуется сервером MySQL как анонимный, т.е. позволяет подключаться пользователю с произвольным именем или без указания имени. Например, вы создали пользователя ''@localhost с пустым паролем, чтобы каждый мог подключиться к базе. Однако, если при подключении вы укажите пароль отличный от пустого, то получите ошибку 1045. Как говорилось ранее, нужно совпадение трех параметров: имени пользователя, хоста и пароля, а пароль в данном случае не совпадает с тем, что в базе.
 
 Top
ekkl
Отправлено: 30 Ноября, 2013 - 17:14:42
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




Всем спасибо за желание помочь и советы. Проблема решена.
Все, у кого та же проблема выполните команду от рута mysql_secure_installation
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]nstallation[dot]html
http://www[dot]sql[dot]ru/forum/1062327/[dot][dot][dot]tsya-bez-oshibki
--
ПС. Проблема была вовсе не в php а в настройках самого мускула. mysqli чётко передавал то. что возвращала БД.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Администрирование БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB