Мне нужно сбросить пароль root моей локальной установки mysql, но я этого не позволю. Я пробовал это:
$ sudo /etc/init.d/mysql stop
* Stopping MySQL database server mysqld [ OK ]
[1]- Exit 1 sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
[2]+ Exit 1 sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking
reg@regDesktopHome:~$ sudo mysqld --skip-grant-tables &
[1] 13651
reg@regDesktopHome:~$ 140627 19:02:02 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
reg@regDesktopHome:~$ mysql -u root mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
reg@regDesktopHome:~$ sudo mysql -u root mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[1]+ Exit 1 sudo mysqld --skip-grant-tables
Как я могу получить сброс пароля? edit 1 Я получил это:
$ ps ax| grep mysql
16515 ? Ssl 0:00 /usr/sbin/mysqld
16551 pts/23 S+ 0:00 grep --color=auto mysql
reg@regDesktopHome:~/semios/v3upgrade$ sudo kill -9 16515
reg@regDesktopHome:~/semios/v3upgrade$ ps ax| grep mysql
16678 ? Ssl 0:00 /usr/sbin/mysqld
16715 pts/23 S+ 0:00 grep --color=auto mysql
reg@regDesktopHome:~/semios/v3upgrade$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
похоже, что процесс автоматически перезапускает mysql, как только я его убью ...
Ссылка, взятая из этого блога:
Шаг 1. Остановка службы MySQL.
sudo service mysql stop
Шаг 2: Убейте все запущенные mysqld.
sudo killall -9 mysqld
[d4 ] Шаг 3: Запуск mysqld в безопасном режиме. sudo mysqld_safe --skip-grant-tables --skip-networking &
Шаг 4: Запустите mysql client
mysql -u root
Шаг 5. После успешного входа в систему выполните эту команду, чтобы изменить любой password
FLUSH PRIVILEGES;
Шаг 6. Вы можете обновить пароль root mysql.
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
для mysql> 5.7 используйте это вместо выше:
UPDATE mysql.user SET authentication_string=PASSWORD('newpwd') WHERE User='root';
Шаг 7: выполните эту команду.
FLUSH PRIVILEGES;
Шаг 8: Выход из консоли mysql
exit
Шаг 9: Убейте mysqld_safe и запустите mysql
В Ubuntu 16.04 и mysql-server-5.7 правильный ответ - последний комментарий olafure, dpkg-reconfigure mysql-server-5.7 больше не работает.
sudo service mysql stop
sudo killall mysqld
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
Теперь в консоли mysql >mysql
[ f2]Перезапустить хороший mysql процесс
sudo killall mysqld
sudo service mysql start
Проверить новый пароль
mysql -u root -p
Enter password: newpass
mysql>
Начиная с MySQL 5.7 во время начальной установки, если вы оставите пароль пустым, то для этого пользователя аутентификация будет основана на плагине auth_socket.
Правильный способ смены пароля будет: [ ! d2]
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/ [!d3 ]
Создайте файл с помощью этого:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Остановите сервер mysql и запустите это:
mysqld_safe --init-file=/home/me/mysql-init &
Проверьте здесь для получения более подробной информации: http: //dev.mysql .com / DOC / RefMan / 5.0 / ен / сброс-permissions.html
Ничто из остальных ответов не показалось мне полезным. Это мое решение:
sudo service mysql stop
sudo mysqld_safe &
sudo mysql -u root
Там:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
FLUSH PRIVILEGES;
QUIT;
Тогда:
sudo killall mysqld
sudo service mysql start
sudo mysql -u root -p