1

Тема: Access denied

У меня возникла такая проблема. 
Мне посоветывали не ходить в базу с root. Я создала нового пользователя.  Хотела  создать допуск только для нового пользователя и стёрла  root@localhost.  Переустановила 5 раз, но я даже не могу восстановить пользователя root,  потому что он всегда выдаёт
#1045 - Access denied for user 'root'@'localhost' (using password: YES)
Что делать? Помогите.

2

Re: Access denied

Saturnia
Если данных в БД еще нет, то можно удалить обычным образом MySQL, затем полностью удалить каталог в котором сервер был установлен (важно удалить каталог data).

Если требуется сохранить данные, то механизм восстановления пользователя root на Windows, следующий.

1) Создайте пустой файл C:\mysql-init.txt и добавьте в него следующие строки:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;
FLUSH PRIVILEGES;

IDENTIFIED BY 'pass' - pass замените на желаемый пароль, который будет использовать root.
2) Остановите сервис MySQL.
3) В командной строке введите:

C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
         --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini"
         --init-file=C:\mysql-init.txt

4) После успешного запуска MySQL, остановите его и запустите обычным образом.

Удалять пользователя root не надо ни в коем случае, так как это системный пользователь, который должен присутствовать всегда. Установите для root хороший пароль, затем создайте отдельного пользователя на странице "Привилегии", наделив его только теми привилегиями, которые требуется использовать, после чего работайте с MySQL под созданным вами пользователем.

3

Re: Access denied

Спасибо большое. Я думаю проще переустановить  MySQL,  пока там нет баз данных.
Моя ошибка возникла из-за того,  что я пользовалась то коммандной строкой, то  PHPMyAdmin.
Может быть, если есть PHPMyAdmin, то не использовать  коммандную строку.

4

Re: Access denied

Saturnia
Можно использовать оба способа доступа к MySQL, но важно понимать, что из командной строки с данными в utf8, или находящимися в национальных кодировках, например cp1251, работать не получится, так как кодировка командной строки в Windows - cp866 (можно, конечно изменить кодировку, но это сложно и обычно не имеет смысла). Однако работать со структурой таблиц из командной строки можно совершенно безбоязнено, так как в этом случае данные не затрагиваются.

5

Re: Access denied

Уважаемый Hanut, у меня та же проблема, я тут совсем зеленый, постараюсь объяснить трабл как можно подробней и самого начала(рассчитывая на подробный же ответ):

поставил я apache2.2+php5+MySQL6, но накосячил походу в php.ini или в httpd.txt (предположительно изза кавычек из русской раскладки вместо английской (ибо такой косяк я исправил после и вроде как все стало норм, ну да обовсем по-порядку), так что даже изначально обратившись из браузера к 127.0.0.1 Не увидел долгожданного "It works!", которе по описанию из http://freshcoder.ru/archives/19 увидеть должен был) стремглав снес apache и php, переставил их заново, настроил php.ini, httpd, улицезрел наконец "It works!", обрадовался, решил что стоит переставить и MySQL, но тут запнулся, далее сам трабл:

"Та же проблема" - забыл пароль, при попытке его сменить (пытаюсь все же вспомнить, подобрать) используя MySQLInstanceConfig(в папке ...MySQL\bin), после нажатия Execute (окошко такое же как и при настройке после установки), там четыре пункта - prepare configuration проходит, write configuration проходит, restart service проходит и останавливается на apply security settings
( прилагаю рисунок чтобы не быть голословным smile : http://demitry777.narod.ru/mysqltrabl.jpg )
нашел еще одну, казалось бы нелохую статью http://www.realcoding.net/article/view/4815 но тоже ничего пока что извлечь не смог(((
То что предлагаете вы у меня не прокатило выдав "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" не является  внутренней или внешней командой, исполняемой программой или пакетным файлом. Объясните пожалуйста мне, неопытному что не так
З.Ы. у меня в командной строке (cmd.exe из пуск->выполнить) каретка стоит не на C:\> как у вас в примере а на C:\Documents and Settings\Username>
З.Ы.Ы. в той статье на которую я сослался тоже остались непонятными слова "2. Запускаем mysql следующей командой:..." куда вводится команда?,
"3. Запускаем клиента mysql: mysql -u root" опять куда команды прописываются?, "4. Выполняем sql запрос: UPDATE mysql.user SET Password=PASSWORD(’newpwd’) WHERE User=’root’; где newpwd - новый пароль.", опять откуда выполняется sql запрос?
Надеюсь тчо не утомил вас своей писаниной, и не обязую вас естесственно отвечать на все вопросы, но пожалуйста постарайтесь объяснить, как можно сменить этот нехороший root пароль? Ато после возникновения этой ошибки обращение к localhost или к 127.0.0.1 выдает "you don't have permission to access on this server"
С уважением, Дмитрий.

Сообщение добавлено Thu Aug 28 19:02:46 2008
З.Ы.Ы.Ы. Файерволлы отключены

6

Re: Access denied

Diamond сказал:

выдав "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"

Если у вас MySQL 6, просто поправьте пути к mysqld-nt.exe и C:\Program Files\MySQL\MySQL Server 5.0\my.ini.

Diamond сказал:

в командной строке (cmd.exe из пуск->выполнить) каретка стоит не на C:\> как у вас в примере а на C:\Documents and Settings\Username>

Не имеет значения.

В приведенной вами статье описана смена пароля root на Unix. Используйте приведенный мной способ, так как он единственно возможный на Windows.

Я бы не советовал использовать MySQL 6, так как он еще крайне не стабилен и имеет проблемы в совместимости.

7

Re: Access denied

Вроде теперь все правильно сделал, но теперь пишет D:\server\MySQL\bin\mysqld-nt.exe не является приложением win32, а замена mysqld-nt.exe на mysqld.exe приводит к зависанию консоли... не подскажете - сколько примерно должен выполнятся код?

8

Re: Access denied

Хотя после "зависания" консоли перезапустив mysql измененный предложенным вами способом пароль подошел! спасибо за помощь!

9

Re: Access denied

Уважаемый Hanut, у меня проблема похожая.я по ошибке удалил всех пользователей в том числе и root/ntgthm не могу по выше указанным  действиям восстановитть.в командной строке не получается пишет:"Grant" не является внутренней или внешней командой,исполняемой программой или пакетным файлом.
пожалуйста подскажите как мне востановить сервер?что не выходила ошибка:#1045 - Access denied for user 'root'@'localhost' (using password: NO)

10

Re: Access denied

Timerbulat
GRANT запрос должен находиться в файле C:\mysql-init.txt. Его нельзя выполнять из командной строки.

11

Re: Access denied

спасибо большое что ответили.но у меня тоже самое пишется по отношению к набору из командной строки: C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
         --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini"
         --init-file=C:\mysql-init.txt
C:\> не является внутренней или внешней командой,исполняемой программой или пакетным файлом.
Уважаемый Hanut,пожалуйста,если Вам не трудно,напишите мне аллгоритм действий как мне исправить эту ошибку.у меня не стоит на C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe.у меня денвер.помогите пожалуйста!

12

Re: Access denied

Timerbulat
На Денвере вам необходимо найти mysql.exe или mysqld.exe или mysqld-nt.exe, и переправить пути к данному файлу и конфигурационному файлу my.ini (или my.cnf) на ваши. Обратите внимание, что конфигурационный файл может иметь имя my.cnf на Денвере, поэтому поищите и его.

В командной строке надо выполнять вот это:
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
         --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini"
         --init-file=C:\mysql-init.txt

Причем копировать в командную строку надо без разрывов строки (здесь они даны для удобства восприятия).

13

Re: Access denied

Уважаемый Hanut, я ввел все как вы сказали.нашел my.cnf.но у меня снова проблема с командной строкой когда я пишу все это то что вы сказали ввести в командной строке,мне пишет вот что: "C:\" не является внутренней или внешней командой,исполняемой программой или пакетным файлом.
у меня кстати  в командной строке (cmd.exe из пуск->выполнить) каретка стоит не на C:\> как у вас в примере а на C:\Documents and Settings\Admin>, но вы же говорили что это не имеет значения.что делать тепрерь?

14

Re: Access denied

Timerbulat
Покажите что вы вводите в командной строке.

15

Re: Access denied

"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
         --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini"
         --init-file=C:\mysql-init.txt
и еще пробывал вводить
"E:\WebServers\usr\local\mysql5\bin\mysql.exe"--defaults-file="E:\WebServers\usr\local\mysql5\my.cnf"--init-file=C:\mysql-init.txt

Сообщение добавлено Tue Feb  2 15:55:40 2010
у меня ничто не вводится сразу пишет :
не является внутренней или внешней командой,исполняемой программой или пакетным файлом.можно както бз комндной строки?

16

Re: Access denied

Так попробуйте.
"E:\WebServers\usr\local\mysql5\bin\mysql.exe" --defaults-file="E:\WebServers\usr\local\mysql5\my.cnf" --init-file=C:\mysql-init.txt

17

Re: Access denied

я все это вводил пишет:что системе не удается найти указанный путь.хотя он есть этот путь и я без ошибок ввел(

18

Re: Access denied

Timerbulat
Где-то вы делаете ошибку.

Введите в командной строке:
cd E:\WebServers\usr\local\mysql5\bin

Затем:
mysql.exe --defaults-file="E:\WebServers\usr\local\mysql5\my.cnf" --init-file=C:\mysql-init.txt

19

Re: Access denied

я не один раз пробывал все это вводить.ошибку точно не совершаю в орфографии и пути.мне пишет снова тоже самое что системе не удается найти указанный путь!Поверьте я ввожу все как вы говорите.и файл находиться в этом пути.можно ли решить эту проблему другим способом без командной строки?

20

Re: Access denied

Timerbulat
Тогда сохраните файлы БД в каталоге data (ищите этот каталог там же где и MySQL). Сохранить надо все папки, кроме папки mysql.

Затем надо удалить Денвер и переустановить его. Проверьте, чтобы удалилось все, включая каталог data.

После переустановки положите сохраненные папки в каталог data. Перезапустите Денвер и проверьте восстановились ли таблицы.

21

Re: Access denied

Скажите пожалуйста:
1. как удалить денвер?
2.как сохранить базу данных?где она находиться?база даных это несколько папок?

22

Re: Access denied

Timerbulat
1) Кажется для удаления Денвера надо только удалить все его папки. Уточните в документации, или на форуме Денвера.
2) Найдите каталог data, в нем будут папки с именами ваших баз данных - их надо сохранить (внутри этих папок находятся файлы таблиц), все, кроме папки mysql.

23

Re: Access denied

Уважаемый Hanut,спасибо Вам за ответы.у меня так и ничего не вышло(
с удалением по глупости пользователя root, все пошло на перекасяк.теперь я не могу востаноить все(обидно что столько работы было продеоано,столько материалов собрано.вот я скопировал базу данных в другой денвер,она в phpmyadmin импортируется,а почему в joomle в менеджере материвалов,да и вообще везде в joomle все пусто.для чего ж я тогда таблицы экспортировал,раз все пусто.или я чтот не так делаю?

24

Re: Access denied

Timerbulat
Проверьте, чтобы версии MySQL в Денвере были одинаковы, иначе ничего не выйдет.

Если вы скопировали БД из каталога data, то после перезагрузки Денвера откройте phpMyAdmin и посмотрите на состояние таблиц. Если таблицы видны, но данных в них нет, то попробуйте для всех таблиц поочередно проделать следующий запрос:

REPAIR TABLE `table_name`;

Данный запрос надо вводить в phpMyAdmin в окне выполнения SQL запроса. Вместо table_name подставьте имя таблицы.

25

Re: Access denied

по запросу ошибка:
SQL-запрос:

REPAIR TABLE 'bak_banner'

Ответ MySQL: Документация
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''bak_banner'' at line 1