Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - смена пароля root

Ответить
Настройки темы
MySQL - смена пароля root
jah jah вне форума

Старожил


Сообщения: 215
Благодарности: 7

Профиль | Отправить PM | Цитировать


Изменения
Автор: jah
Дата: 11-05-2014
Здравствуйте!

MySQL Server 5.6, вложенный каталог bin добавлен к path

Пробуя запускать mysqladmin c различными опциями отсюда http://dev.mysql.com/doc/refman/5.6/en/mysqladmin.html
сделал следующее:
Код: Выделить весь код
mysqladmin -u root old-password -p
то есть сменил пароль от root и при этом новый пароль сохранился в старом формате (pre-4.1)

Отсюда возникли два вопроса:

1. как подключаться к mysql-серверу с паролем в старом формате?
стандартным способом mysql -h localhost -u root -p (или без -h localhost, так как это значение по умолчанию) уже не получается

Код: Выделить весь код
ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
предполагаю, что нужно как-то отключить опцию --secure-auth, которая по умолчанию и которая не позволяет сделать соединение с паролем в старом формате

данное решение возможно работает, но пока до конфигурирования my.cnf не дошёл и, помимо этого, хотелось бы решить данную задачу в консоли
http://serverfault.com/questions/573...h-mysql-5-6-15
Цитата:
I believe this should be added to your my.cnf:

secure-auth = OFF
То есть, если я правильно рассуждаю, то вопрос свёлся к тому, как отключить secure-auth из командной строки?



2. как сменить пароль root, если он утерян?
действую согласно http://dev.mysql.com/doc/refman/5.0/...rmissions.html
Цитата:
C.5.4.1.3 Resetting the Root Password: Generic Instructions

The preceding sections provide password-resetting instructions for Windows and Unix systems. Alternatively, on any platform, you can set the new password using the mysql client (but this approach is less secure):

Stop mysqld and restart it with the --skip-grant-tables option. This enables anyone to connect without a password and with all privileges. Because this is insecure, you might want to use --skip-grant-tables in conjunction with --skip-networking to prevent remote clients from connecting.

Connect to the mysqld server with this command:

shell> mysql
Issue the following statements in the mysql client. Replace the password with the password that you want to use.

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
The FLUSH statement tells the server to reload the grant tables into memory so that it notices the password change.

You should now be able to connect to the MySQL server as root using the new password. Stop the server, then restart it normally (without the --skip-grant-tables and --skip-networking options).
то есть в моём случае делаю так:
- останавливаю mysql-сервер командой net stop mysql56 из командной строки, запущенной от имени администратора
- запускаю сервер в режиме входа без пароля командой mysqld --skip-grant-tables
- открываю новую командную строку, так как прежняя оказывается занятой (может быть есть способ запустить и вернуть управление командной строке, тоже полезно было бы узнать)
- подключаюсь к серверу без пароля командой mysql или mysql -u root (как я понимаю становится без разницы под кем заходить)
- обновляю пароль для root командами:
Код: Выделить весь код
UPDATE mysql.user SET Password=PASSWORD('новый_пароль') WHERE User='root';
вывод:
Код: Выделить весь код
Query OK, 0 rows affected (0.01 sec)
Rows matched: 3  Changed: 0  Warnings: 0
Код: Выделить весь код
FLUSH PRIVILEGES;
Вывод:
Код: Выделить весь код
Query OK, 0 rows affected (0.06 sec)

- завершаю mysqld.exe из диспетчера задач (либо tasklist -> taskkill)
- запускаю службу mysql командой net start mysql56

Итого:
win+r -> cmd -> mysql -h localhost -u root -p -> ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
то есть ничего не изменилось
почему не изменилось понятно, так как вывод после update показал, что изменений сделано не было, но почему update не срабатывает неясно.
Следовательно, остаётся вопрос что делать - как сменить пароль у root, когда он утерян?

Спасибо!

Отправлено: 20:53, 11-05-2014

 
jah jah вне форума Автор темы

Старожил


Сообщения: 215
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата jah:
1. как подключаться к mysql-серверу с паролем в старом формате? »
можно запустить сервер с опцией --skip-secure-auth, тогда соединение с вводом пароля в старом формате пройдёт успешно
Код: Выделить весь код
mysqld --skip-secure-auth
http://dev.mysql.com/doc/refman/5.6/...r-options.html
Цитата:
--secure-auth

Command-Line Format --secure-auth
Option-File Format secure-auth
System Variable Name secure_auth
Variable Scope Global
Dynamic Variable Yes
Permitted Values (<= 5.6.4)
Type boolean
Default OFF
Permitted Values (>= 5.6.5)
Type boolean
Default ON
This option causes the server to block connections by clients that attempt to use accounts that have passwords stored in the old (pre-4.1) format. Use it to prevent all use of passwords employing the old format (and hence insecure communication over the network). Before MySQL 5.6.5, this option is disabled by default. As of MySQL 5.6.5, it is enabled by default; to disable it, use --skip-secure-auth.

Цитата jah:
(может быть есть способ запустить и вернуть управление командной строке, тоже полезно было бы узнать) »
пока вопрос остаётся


Цитата jah:
почему не изменилось понятно, так как вывод после update показал, что изменений сделано не было, но почему update не срабатывает неясно. »
если пароль хеширован в старом формате, но как строка тот же, то update-а не происходит, даже если новый пароль был пропущен через password('пароль'),
если пароль другой, то покажет, что udpate был, хотя исходную проблему с ошибкой 2049 при коннекте это не решает

Цитата jah:
Следовательно, остаётся вопрос что делать - как сменить пароль у root, когда он утерян? »
в целом похоже на баг, так как приведённое официальное решение не срабатывает
пока помогла лишь переустановка сервера с предварительным удалением каталога C:\ProgramData\MySQL\MySQL Server 5.6 (иначе при новой установке запросит ввести пароль от старого root и проблема останется)

если кто смог решить проблему меньшими силами, просьба поделиться

Отправлено: 22:03, 14-05-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - смена пароля root

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 - [решено] Не выключается сложность пароля и не включается смена пароля по желанию пользователя LEGI0N Windows Server 2008/2008 R2 3 26-12-2013 23:06
Разное - Смена пароля. Как вызвать диалоговое окно "Смена пароля" iceberg200 Microsoft Windows 2000/XP 0 04-11-2011 16:22
Debian/Ubuntu - [решено] Восстановления пароля ROOT'а на файловом сервере CJ F.A.N. Общий по Linux 4 11-08-2010 06:02
Смена пароля пользователем YDen Microsoft Windows NT/2000/2003 5 27-05-2009 09:27
Восстановление пароля root Tosha_l Общий по FreeBSD 10 30-09-2005 10:41




 
Переход