mysqld_safe - это сценарий запуска MySQL в "
безопасном режиме", или что-то в этом роде. Опция
--skip-grant-tables (обратите внимание, перед опцией, стоит
два знака минус), как можно догадаться из названия, запускает MySQL сервер без учёта таблицы привилегий, что позволяет обратиться к БД любому пользователю, без пароля и со всеми привилегиями. Знак амперсанда (&) в конце говорит о том, что процесс запускается в фоновом режиме.
Соединяемся с mysql сервером как root:
mysql -u root
Как вы видите, здесь не надо использовать sudo и/или полный путь.
Войдя в терминал работы с MySQL - строка начинается с mysql>- можно приступить к замене пароля для пользователя root:
- Выбираем БД с именем mysql, к которой будут происходить запросы:
use mysql
- Обновляем значение поля
password, где поле user имеет значение root, а поле host значение localhost:
update user set password=PASSWORD('new_password') where user='root' and host='localhost';
Обратите внимание, что для защиты пароля используется SQL-функция PASSWORD(), а сама БД mysql (как я понимаю) является системной.
- Дальше нам нужно обновить кэш с привелегиями, для чего мы будем использовать команду FLUSH с соответствующей опцией:
flush privileges;
- Выходим из консоли mysql:
\q
Останавливаем все процессы с именем mysqld_safe:
killall mysqld_safe
Запускаем сервер:
sudo /etc/init.d/mysql start
Пробуем зайти под root с новым паролем. Для этого соединяемся с MySQL (как в пункте 3), но уже с дополнительным параметром -p:
mysql -u root -p
После этого вас попросят ввести пароль (Enter password:)