Host 'localhost' is not allowed to connect to this MySQL server

Nickolay

Новичок
Host 'localhost' is not allowed to connect to this MySQL server

У меня такая проблема. После проведения внешнего аудита компьютера (компьютер сканировался с Интернета с помощью программы xSpider, файерволл на компе был специально отключен) появилась следующая проблема. На компьютере был установлен локальный web-сервер для тестирования скрипта Internet-магазина. После тестирования возникла следующая проблема:
При загрузке страницы Интернет-магазина возникает ошибка:

Warning: mysql_connect() [function.mysql-connect]: Host 'localhost' is not allowed to connect to this MySQL server in C:\Sites\home\localhost\www\shop\includes\database\mysql.php on line 13
Host 'localhost' is not allowed to connect to this MySQL server

Также невозможно подсоединиться к MySQL-серверу с помощью стандартных утилит mysql.exe, mysqladmin.exe, winmysqladmin.exe, программы MySQLAdministrator. Во всех случаях одна ошибка:

Host 'localhost' is not allowed to connect to this MySQL server

То есть MySQL Server не дает соединиться с ним с узла localhost. До тестирования никаких ошибок в работе сервера не возникало.
Сброс пароля пользователя root на localhost не помогло.

Конфигурация сервера:
ОС – Windows XP Professional SP2
mysql-4.1.12-win32
php-5.0.5-Win32
apache_2.0.54-win32-x86-no_ssl
mysql-administrator-1.1.2-win
phpMyAdmin-2.6.4-pl1
winmysqladmin-3.23.36

Очень прошу помочь Вас в решении моей проблемы.
 

svetasmirnova

маленький монстрик
Почитай про авторизацию в MySQL. Она проходит в несколько этапов. Один из них: по хостам. То есть внешняя программа внесла изменения в таблицу host базы mysql.
Как помочь... Откуда-нибудь можешь соединиться?
 

Andreika

"PHP for nubies" reader
судя по описанию ошибки мож проблема и в этом, но xspider обычно ничего не меняет на компе, и уж тем более, если он запускался извне... если одновременно с этим не мучали базу и с файрволом при включении не намудрили, то может быть мускул заблочил подключения после определенного кол-ва ошибок (max_connect_errors которые).. это было бы более логично, но там по другому текст ошибки пишется.. в общем загадисто как-то все это
---
тада надо перезапустить мускул.. не поможет - перезапустить с переменной -O max_connect_errors=10000, сделать FLUSH HOSTS
 

Апельсин

Оранжевое создание
Andreika, max_connect_errors тут не при чем.
Читай что написала Света.
Эта ошибка значит что в таблицах есть запись для пользователя с таким именем, но не с таким хостом.
Запусти сервер со --skip-grant-tables опцией, законнектись,ю посмотри какие записи есть для этого пользователя и т.д.
 

Nickolay

Новичок
Откуда-нибудь можешь соединиться?
Ниоткуда не могу, так как у меня был один пользователь root/localhost.

тада надо перезапустить мускул.. не поможет - перезапустить с переменной -O max_connect_errors=10000, сделать FLUSH HOSTS
А как это сделать?Объясни новичку пожалуйста. Пробовал так
mysqld-nt.exe -O max_connect_errors=10000
но эффекта ноль, ничего не происходит,сервер не запустился (только через службы).

Запусти сервер со --skip-grant-tables опцией, законнектись,ю посмотри какие записи есть для этого пользователя и т.д.
Запускал как в предыдущем примере, тот же итог, сервер не запускается.
mysqld-nt.exe --skip-grant-tables
Ноль эффекта. Запустить можно только через Службы.
 

svetasmirnova

маленький монстрик
А что происходит, после того, как mysqld-nt.exe --skip-grant-tables в командной строке вводишь? Ошибки?
 

Nickolay

Новичок
Автор оригинала: svetasmirnova
А что происходит, после того, как mysqld-nt.exe --skip-grant-tables в командной строке вводишь? Ошибки?
Нет ничего не происходит, нет никаких ошибок, ворачивается строка приглашения:
C:\Server\Mysql\bin>
 

Апельсин

Оранжевое создание
Запускал как в предыдущем примере, тот же итог, сервер не запускается.
mysqld-nt.exe --skip-grant-tables
Ноль эффекта. Запустить можно только через Службы.
Если вы запускаете из коммандной строки, то неплохо добавить еще опцию --console что бы вывод ошибок был в консоль.

mysqld-nt.exe --skip-grant-tables --console
 

c0r0ner

Новичок
возможно стоит использовать ип(127.0.0.1) при коннекте, или добавить loclalhost в таблицу доступа к БД
 

Nickolay

Новичок
Автор оригинала: svetasmirnova
А в процессах его не висит? (Ctrl-Alt-Del -> процессы)
Нет в процессах тоже не висит :(

Автор оригинала: Апельсин
Если вы запускаете из коммандной строки, то неплохо добавить еще опцию --console что бы вывод ошибок был в консоль.
mysqld-nt.exe --skip-grant-tables --console
C:\Server\MySQL\bin>mysqld --skip-grant-tables --console
InnoDB: Error: log file .\ib_logfile0 is of different size 0 10485760 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
051011 9:10:59 [ERROR] Can't init databases
051011 9:10:59 [ERROR] Aborting

Странно, но в my.ini файле стоит размер лог файла innodb_log_file_size=10M

Автор оригинала: c0r0ner
возможно стоит использовать ип(127.0.0.1) при коннекте, или добавить loclalhost в таблицу доступа к БД
указывал при подключении к MySQL ip:127.0.0.1 - все равно та же ошибка. А добавить Localhost в таблицу доступа к БД я не могу, т.к нет доступа из localhost, а у меня был один пользователь root/localhost

-~{}~ 11.10.05 11:41:

Улалил я логи MySQL: logfile0 и logfile1
И запустил сервер:
C:\Server\MySQL\bin>mysqld --skip-grant-tables --console
В службах сервер как бы не запущен, но в диспетчере задач процесс mysqld.exe висит - значит сервер все таки запустился.
Интернет-магазин загрузился, но как мне теперь восстановить таблицу host и прописать там localhost?
 

svetasmirnova

маленький монстрик
>В службах сервер как бы не запущен, но в диспетчере задач процесс mysqld.exe висит - значит сервер все таки запустился.

Он и не должен быть в службах: всё как надо
>но как мне теперь восстановить таблицу host и прописать там localhost
Вот это почитай:
http://dev.mysql.com/doc/mysql/ru/user-account-management.html
 

Nickolay

Новичок
Кстати, с --skip-grant-tables PhpMyAdmin загрузился (после того как я удалил логи MySQL).
Зашел в меню "Привелегии" - а там ни одного пользователя !!! И создать нового я не могу - не хватает прав. :(
SQL-запрос:
GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost' IDENTIFIED BY '*********' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;
Ответ MySQL:
#1290 - The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
 

Nickolay

Новичок
Автор оригинала: svetasmirnova
Вот это почитай:
http://dev.mysql.com/doc/mysql/ru/user-account-management.html
Читал и не раз, но там задание изначальных привелегий подразумевает, что по умолчанию имеется пользователь root без пароля, а у меня PhpMyAdmin показывает, что у меня вообще нет пользователей (В меню "привелегии"), хотя в саму программу пхпмайадмин я захожу как
MySQL 4.1.12 на localhost как root@localhost

Как мне теперь быть?
 

Nickolay

Новичок
Автор оригинала: svetasmirnova
А консольным клиентом?
А консольным клиентом зашло в MySQL!!!
Но смогу ли я создать пользователя root@localhost со всеми правами, когда сервер mysqld запущен с опцией
--skip-grant-tables ???
 

svetasmirnova

маленький монстрик
А почему нет? Таблица привилегий такая же как и все остальные.
 

Апельсин

Оранжевое создание
Nickolay, да, используй обычные INSERT.

Впрочем FLUSH PRIVILEGES; а потом GRANT раньше тоже работало.
 

Nickolay

Новичок
Вообщем, удалил логи MySQL - logfile0 и logfile1
Потом запустил Mysqld-сервер с опцией
C:\Server\MySQL\bin>mysqld --skip-grant-tables
Зашел в консольный клиент mysql под root@localhost
Создал пользователя root@localhost:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost
-> IDENTIFIED BY '*********' WITH GRANT OPTION;
Теперь все нормально, и в PhpMyAdmin--Привелегии - показывает пользователя
root localhost ALL PRIVILEGES
И ВСЕ РАБОТАЕТ!!!
Вообщем, всем кто откликнулся БОЛЬШОЕ СПАСИБО, а особенно To svetasmirnova & Апельсин!!!
Но вообщем, хотелось бы знать как такое могло произойти,
(переполнение лог файлов и удаление пользователя root@localhost) и что нужно сделать чтобы такое больше не повторилось ???
 
Сверху