jah
11-05-2014, 20:53
Здравствуйте!
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/573809/skip-secure-auth-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/en/resetting-permissions.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, когда он утерян?
Спасибо!
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/573809/skip-secure-auth-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/en/resetting-permissions.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, когда он утерян?
Спасибо!