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: