[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mysqld_safe 'Can't connect to local MySQL server through socket' from bash



On 09/27/2013 11:21 AM, Vladimir Skubriev wrote:

#!/bin/bash
mysql -u root --password=12345678 mysql -e 'show databases;'
if ! [ $? -eq 0 ]; then
service mysql stop; if ! [ $? -eq 0 ]; then exit 1000; fi; sleep 1
mysqld_safe --skip-grant-tables --socket=/tmp/mysqld_safe.socket --pid-file=/tmp/mysqld_safe.pid >/dev/null &
# chown root:root /tmp/mysqld_safe.socket
# chmod 777 /tmp/mysqld_safe.socket
echo "use mysql;" > /tmp/mysql_flush_root.sql
echo "update user set password=PASSWORD("12345678") where User='root'; " >> /tmp/mysql_flush_root.sql
echo "flush privileges;" >> /tmp/mysql_flush_root.sql
sleep 5 )
mysql --socket=/tmp/mysqld_safe.socket < /tmp/mysql_flush_root.sql; if ! [ $? -eq 0 ]; then exit 1001; fi
rm /tmp/mysql_flush_root.sql
kill -TERM $(cat /tmp/mysqld_safe.pid); if ! [ $? -eq 0 ]; then exit 1002; fi
else exit 0;
fi

Сервер mysqld_safe не успевал запускаться

В итоге получилось так:

#!/bin/bash
    mysql -u root --password=2 mysql -e 'show databases;'> /dev/null
    if ! [ $? -eq 0 ]; then
        service mysql stop; if ! [ $? -eq 0 ]; then exit 1000; fi;
        sleep 3
mysqld_safe --skip-grant-tables --socket=/tmp/mysqld_safe.socket --pid-file=/tmp/mysqld_safe.pid >/dev/null &
        echo "use mysql;" > /tmp/mysql_flush_root.sql
echo "update user set password=PASSWORD("2") where User='root'; " >> /tmp/mysql_flush_root.sql
        echo "flush privileges;" >> /tmp/mysql_flush_root.sql
        sleep 5
        mysql --socket=/tmp/mysqld_safe.socket < /tmp/mysql_flush_root.sql
        rm /tmp/mysql_flush_root.sql
        kill -TERM $(cat /tmp/mysqld_safe.pid);
        service mysql start
    else exit 0;
    fi

Интерсено как можно по простому (очень простому) заменить sleep'ы

В принципе мне этот скрипт нужен будет только один раз при переносе базы со старого сервера на новый

p.s. если вместо паролей поставить $1, то будет вообще универсальная сказка )

Вопрос 1: if дождеться правильного значения в $? - или убрать его, если не могу что-то более приличное написать ) ?

        service mysql stop; if ! [ $? -eq 0 ]; then exit 1000; fi;
        sleep 3

Вопрос 2: найденный мной(на просторах инета) UPDATE меняет пароль для всех хостов с которых может входить пользователь root ?

Спасибо

--
С Уважением,
специалист по техническому и программному обеспечению,
системный администратор

Скубриев Владимир
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Россия, Ростовская область, г. Таганрог

тел. моб: +7 (918) 504 38 20
skype: v.skubriev
icq: 214-800-502
www: skubriev.ru


Reply to: