Как изменить пароль пользователя 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?
Ответы
Ответ 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
.