Подтвердить что ты не робот

Как изменить пароль пользователя mysql

Я установил сервер 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)'

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

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

/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), а затем переустановил его, но это не помогло.

Как заставить reset пароль root?

4b9b3361

Ответ 1

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

Затем я смог установить пароль root. Как только вы установили пароль root. mysqladmin не позволит вам reset, если вы этого не знаете.

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

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

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

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

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

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

  • Запустите сервер 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 можно найти с помощью диспетчера служб: в меню "Пуск" выберите "Панель управления", затем "Администрирование", затем "Службы". Найдите службу MySQL в списке, щелкните ее правой кнопкой мыши и выберите опцию "Свойства". Поле Путь к исполняемому файлу содержит параметр -defaults-file.

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

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

Ответ 6

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

mysql -u root

а затем:

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

mysql> FLUSH PRIVILEGES;

Работал отлично для меня!

Ответ 7

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

создать файл 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; 

quit

# restart mysql service 

Используемая мной версия MySQL была 5.1.73 под centos6

Ответ 8

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

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