Bash-скрипт сброса пароля root

Рейтинг: 1Ответов: 1Опубликовано: 16.09.2014

Добрый день!
Нужно написать bash-скрипт сброса пароля root в Mysql. Сделал все по инструкции, но пароль не сбрасывается. Проблема в том, что если вводить команды вручную последовательно - все работает, а если записать в файл и исполнить как скрипт, то нет.

#!/bin/bash

/etc/init.d/mysql stop 
mysqld_safe --skip-grant-tables --user=root & 
mysql -u root -e "use mysql;update user set       
password=PASSWORD('') where User='root';flush privileges;exit"

/etc/init.d/mysqld restart

В чем может быть причина? Помогите, пожалуйста...

Ответы

▲ 1

Измени в скрипте

mysqld_safe --skip-grant-tables --user=root && mysql -u root -e "use mysql;update user set password=PASSWORD('') where User='root';flush privileges;exit"

Что изменилось? Вместо одного знака амперсанда используем два, и указываем команды в одну строку. Двойной знак амперсанда означает: выполняем команду и в случае успешного выполнения выполняем следующую Следовательно строго после успешного запуска mysqld_safe будет выполнена следующая команда. И sleep использовать плохая идея. запуск mysqld_safe может занять времени больше чем sleep, и скрипт опять не сработает