Как изменить пароль root для mysql - PullRequest
22 голосов
/ 09 января 2012

Я установил MySQL сервер 5 на Redhat Linux. Я не могу войти в систему как root, поэтому я не могу изменить пароль root.

mysql -u root -p  
Enter password:  <blank>
ERROR 1045 (28000): Access denied for user 'root'@'localhost'
(using password: NO)

Когда я пытаюсь установить один такой:

mysqladmin -u root password 'newpass'

Я получаю ошибку:

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' 
(using password: NO)'

Как будто установлен пароль root.

Я также попытался сбросить пароль с помощью (описано здесь )

/sbin/service mysqld start --skip-grant-tables

А потом делает:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')     
->  WHERE User='root';  
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'

Я даже удалил MySQL-сервер (используя yum), а затем переустановил его, но это не помогло.

Как принудительно сбросить пароль root?

Ответы [ 9 ]

9 голосов
/ 09 января 2012

Один из вариантов - сохранить UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root'; в файл, а затем вручную запустить mysqld с --init-file=FILENAME.Как только сервер запускается, он должен сбросить ваш пароль, и тогда вы сможете войти в систему. После этого вы должны выключить сервер и запустить его как обычно.

5 голосов
/ 09 января 2012

Пароль пользователя root по умолчанию является пустой строкой.

И (using password: NO) говорит, что пароля нет.

Вы пытаетесь войти в систему из другой системы?Я полагаю, вы можете войти в систему как пользователь root только локально.

4 голосов
/ 18 января 2012

Я удалил установку MySQL и удалил файлы данных, а затем переустановил его.

Затем я смог установить пароль пользователя root.После того, как вы установили пароль root на что-то.mysqladmin не позволит вам сбросить его, если вы его не знаете.

Чтобы сбросить его, вы должны владеть процессом выполнения mysqld и передать его в файл инициализации для изменения пароля root: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

3 голосов
/ 11 июля 2018

Немного опоздал к игре, но у меня возникла та же проблема с установкой Raspberry Pi, и я обнаружил, что она требует повышения прав.Добавление sudo в начало смены пароля позволило ему работать.

sudo mysqladmin -u root password 'newpass'

с последующим повышенным доступом к SQL *

sudo mysql -u root -p  

Если любой из них не запущен как sudo, произойдет сбой.

3 голосов
/ 24 марта 2013

Удалите -p из вашей команды.-p вызывает запрос пароля.

Использование: mysql -u root

Это решит вашу проблему.

2 голосов
/ 17 марта 2017

Возможно, немного поздно здесь, но вот что я сделал:

создать файл resetpass.sh, который имеет:

UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root';

# mysqld_safe --init-file=resetpass.sh

# service mysqld start --skip-grant-tables

# mysql -u root -p

Введите пароль

mysql >  change root pass ; flush privs; 

выйти

# restart mysql service 

Версия MySQL, которую я использовал, была 5.1.73 под centos6

2 голосов
/ 23 февраля 2015

Попробуйте сделать это:

mysql -u root

, а затем:

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
    ->                   WHERE User='root'; 

mysql> FLUSH PRIVILEGES;

Отлично сработало для меня!

2 голосов
/ 12 августа 2013

Это помогло мне в Windows с MySQL Server 5.6.Убедитесь, что вы изменили путь mysqld, чтобы указать, где вы установили MySql Server, для меня это было "C:\Program Files\mysql\MySQL Server 5.6\bin\mysqld.exe":

  1. Войдите в систему как администратор.

  2. Остановите сервер MySQL, если он работает.Для сервера, работающего в качестве службы Windows, перейдите в диспетчер служб. В меню «Пуск» выберите «Панель управления», затем «Администрирование», затем «Службы».Найдите службу MySQL в списке и остановите ее.

    Если ваш сервер не работает как служба, вам может потребоваться использовать диспетчер задач, чтобы принудительно остановить его.

  3. Создайте текстовый файл, содержащий следующие операторы.Замените пароль тем паролем, который вы хотите использовать.

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;
    

    Запишите каждый оператор UPDATE и FLUSH в одной строке.Оператор UPDATE сбрасывает пароль для всех корневых учетных записей, а оператор FLUSH сообщает серверу перезагрузить таблицы предоставления в память, чтобы он заметил изменение пароля.

  4. Сохраните файл.В этом примере файл будет называться C:\mysql-init.txt.

  5. . Откройте окно консоли, чтобы перейти к командной строке. В меню «Пуск» выберите «Выполнить», затем введите в качестве команды cmd.для запуска.

  6. Запустите сервер MySQL с помощью специальной опции --init-file (обратите внимание, что обратная косая черта в значении опции удваивается):

    C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt
    

    Если вы установили MySQL в папку, отличную от C: \ mysql, измените команду соответствующим образом.

    Сервер выполняет содержимое файла, названного параметром --init-file, при запуске, изменяя каждую учетную запись root.пароль.

    Вы также можете добавить в команду параметр --console, если хотите, чтобы вывод сервера отображался в окне консоли, а не в файле журнала.

    Если вы установили MySQL с помощьюВ мастере установки MySQL может потребоваться указать параметр --defaults-file:

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

    Соответствующий параметр --defaults-file можно найти с помощью диспетчера служб. В меню «Пуск» выберите «Панель управления».el, затем Администрирование, затем Услуги.Найдите сервис MySQL в списке, щелкните его правой кнопкой мыши и выберите «Свойства».Поле Путь к исполняемому файлу содержит параметр --defaults-file.

  7. После успешного запуска сервера удалите C: \ mysql-init.txt.

http://docs.oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html

0 голосов
/ 08 ноября 2017

Согласно документации, в MySQL 5.7 временный пароль помещается в /var/log/mysqld, но, очевидно, дело не в 5.6.

С MySQL версии 5.6, установленной на RHEL 6.7, я наконец нашелвременный пароль root, установленный во время установки, был помещен в файл /root/.mysql_secret.

...