Как стать автором
Обновить

Комментарии 53

Может mysql-сервер падает?
Access denied — сервер работает.
Появилась еще одна мысль: чуть ниже 61-й строки (в которой ошибка) идет обнуление пароля. Посмотрите в эту сторону. Например, попробуйте логировать пароль перед коннектом.
Это связано с использованием виртуального хостинга.
Вы не держите палец на пульсе, у вас нет контроля. Переезжайте на свой сервак с правами рута — (физический или виртуальный).
Во первых, этот движок крутится на 6 разных серверах, 4 из них шаред, проблема только на одном из них.
Во вторых, для проекта с посещаемостью 10-30 уников в сутки, это не рентабельно.
Это не проблема движка, это проблема сервера mysql на конкретно взятом серваке.

Насчет рентабильно — я переодически кручу проекты с посещаемостью сотни уников в день на виртуальных серваках за 250 руб/мес.
Вот тут я поясняю что мускуль в момент того как движок не пашет, пинали всеми возможными способами, он функционирует, функционирует и еще раз функционирует. + люди в саппорте меня знают, и мне клялись что сервак ни трогали ни разу.
Функционирует для сферического коня в вакууме или для вашего юзера с вашим паролем? Это большая разница…
Кстати возможно, что это было в связи с отказом выделения ресурсов. Проанализируйте время таких ошибок, если это время пиковых нагрузок рунета — все сходится
Рандом полнейший. Причем это не из серии: Тыкнулся — не работает. Обновил — заработало. Он целенаправленно может лежать до часа. При этом сервер мускуля нормально функционирует.
Собственно рандом — это по поводу времени. И утром, и днем, и вечером. Все что угодно.
>> Access denied for user 'dbuser'@'localhost' (using password: YES)
Это не похоже на сообщение майскуэльного апи, это сообщение сервера mysql. Когда наступает затык — пробуйте подключиться клиентом mysql, если там точно также — щемите хостера до упора, это 100% их проблемы
клиентом в смысле с локального хоста в SSH
Все хорошо цепляется. В том то и проблема.
Тогда вообще мистика.
Но выход все равно один: жать хостера.

Напишите простой скрипт в одном файле который будет просто коннектиться к базе и писать удалось / не удалось. (Возможно кстати после этого придет просветление). Если этот скрипт не работает — смело начинайте жестко наезжать на хостера с требованием разобраться.
Если цепляется — прицепиться и мучить MySQL. SHOW OPEN TABLES, SHOW PROCESSLIST и т.п. Можете увидеть много интересного.

Наблюдаю такое регулярно на десятках сайтов — чем ваш такой особенный?
настройте кроном подключение раз в секунду этим логином-паролем

протоколируйте все что можно протоколировать

и вашу фазу луны давайте на почитание хостеру. можете и тут опубликовать. авось решение и найдется
Ресурс подключений выжираете. Переезжайте на другой хостинг.
Есть проект на аналогичном хостинге, на индентичном сервере, с посещаемостью в 10-15 раз большей. Не аргумент.
Аналогичном, но другом?
Нет. Есть проект на предыдущей ветке движка, прям на этом же сервере.
Есть проект на полностью идентичном (если я это говорю, я знаю, что я говорю) сервере, но немного более старая версия этой ветки (ядро вообще не трогали, ни роуты, ни модуль отвечающий за генерацию первой страницы изменениям не подвергался)
На виртуальном хостинге есть такая веселуха, называется оверселлинг. Это еще покруче, чем фаза луны.
В общем думаю надо хостера жать, пусть их админы разберутся.
Или ресурс подключений, или память, или еще что-то. Логично было бы посмотреть логи сервера, может там чего полезного есть.
Не понимаю вобще почему речь пошла про «фазы луны».
согласен с предыдущим оратором и, если не ошибаюсь, то замена mysql_connect на mysql_pconnect должна временно спасти отца русской демократии =)
Да-да!

И ещё можно на движке сайта сделать спец.страницу /health/, при обращении к которой средствами самого движка проводилась бы самодиагностика и вывод результатов — это более корректная проверка «лежания» mysql, чем коннект извне.
Правых тут не нашлось. Предположения логичные конечно, но оказалось что внезапно перестают инклюдиться некоторые файлы. Почему — непонятно.
А, пардон, что в логах?
а в логах все тоже…
2008-11-24 18:27:27 +03:00 --- error: Не пойманное PHP Error: mysql_connect() [function.mysql-connect]: Access denied for user 'dbuser'@'localhost' (using password: YES) в файле system/libraries/drivers/Database/Mysql.php, на строке 61
Если вы про логи движка. На логи сервера я запрос отправил.
вот логи сервера были бы интереснее
А сколько инсертов в базу в час?
Ровно 0.
насколько я понимаю, возможно выпадение базы с таблицей юзеров. Пасворд есть, но юзера нет.
А через какое то время база восстанавливает вывалившиеся таблицы.

начит чето на серваке невпорядке с хардами.
Первая новая реальная идея. + в карму. Спасибо.
А, нет. Рано радуюсь, видно к вечеру мозг не варит. В этот же самый момент доступ к базе с этим юзером есть, яж неоднократно писал выше.
попробуйте это и если не поможет — отпишитесь, а то интересно же =)
я бы попробовал пересобрать php, возможно собран со старой версией библиотек mysql
понаблюдал бы как ведет себя mysql в момент таких глюков и вообще сервер БД и на котором крутится PHP (muninx, nagios и тд)
попробовать в момент глюков подключаться из php используя простой тестовый скрипт с mysql_connect

с mysql уже столько было загадочных глюков, что поверишь и в влияние фаз луны и во что угодно (хотя всему потом находилось рациональное объяснение).
Думаю, если попробовать самостоятельно собрать на хостинге php, ничего не получится; в противном случае, дяди, по ту сторону интернета, слегка огорчатся.
А теперь внимание
ПРАВИЛЬНЫЙ ОТВЕТ! [БОМС]

Виноват конечно ХОСТЕР, потому что он поставил ЛИМИТЫ на число ЗАПРОСОВ, так как MYSQL позволяет это СДЕЛАТЬ.

Когда ваш скрипт перебирает ЛИМИТ — он получает ответ об ОШИБКЕ. Например, запрос занял БОЛЕЕ 1000 едениц времени — и он будет УНИЧТОЖЕН. При этом другой запрос, на эту же БАЗУ от этого же ПОЛЬЗОВАТЕЛЯ будет ВЫПОЛНЕН, если не выйдет за ЛИМИТ!

Включите в скрипте ОТЛАДКУ в файл и запускайте РАСШИФРОВКУ всех ответов от MYSQL туда.

Потом можете ПРОВЕРИТЬ файл и найти реальную причину — ПРЕВЫШЕНИЕ лимитов.
При превышении ЛИМИТА на число ЗАПРОСОВ скрипт получает ответ об ОШИБКЕ: Can't connect to MySQL server…
Мдя? Мдя…
Неа, получает как раз Access denied :)
Это при превышении лимитов на СЕРВЕР. При превышении КЛИЕНТСКИХ ЛИМИТОВ — как раз access denied. Как сервер может дать вам отлуп до login'а при превышении пользовательских лимитов — вы сами подумайте…
Ааа! Поставил root'у максимум 10 запросов в час — теперь не могу вернуть обратно, говорит «отдыхай»!
Все из-за вас! =)
Кстати, пишет не «Access denied», а «User 'root' has exeeded the 'max_connections_per_hour' resource (current value: 10)»
Это от версии мускуля зависит, ЕМНИП.
Я конечно попробую, да и выше уже советовали… Только проблема в том, что на аналогичном сервере, этот движок цветет и пахнет при гораздо большем количестве посещений, просто таки в 10 раз больше. Но, да, все может быть. Пожалуй примем вашу версию за рабочую, сейчас потестим, я отпишусь. Если вы действительно правы то просто огромное вам спасибо. /*прокручивая в голове события последних недель и сложив 2+2, эта версия кажется реальной...*/
Да хоть в 100 раз большей. Если базу лочит чужой процесс (не знаю — backup или что ещё) «намертво или навсегда» и у вас соединения зависают пачками, то и пара обращений к серверу в сутки может лимит выбрать…
да правильный ответ
Хостер банально ограничивает ресурсы.
И дело не в мощности сервера, в програмно выставленном ограничении на количество соединений за определенный промежуток времени(как правило, за час)
Как уже писали выше — просто логируй параметры подключения перед подключением.

имя пользователя
пароль
имя БД

По разным причинам они могут отличаться от начальных.
Скажите, а зачем вам на тулбаре аж три кнопки, ведущих на gmail? :)
Гуглоаккаунт, мэйл ГуглоАпс рабочий, мейл ГуглоАпс собственный.
я видел такое. Проблемма в том, что у вас на этом сервере хостится кто-то кто имеет много коннекторв к базе. У базы есть ограничение на общее кол-во подключений единовремено (не уверен что есть ограничения по пользователям). В общем иногда они упираются в это ограничение. Меняйте сервер
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации