module-mysql/files/scripts/Debian/setmysqlpass.sh

48 lines
1.5 KiB
Bash
Raw Normal View History

2009-12-10 18:22:25 +01:00
#!/bin/sh
test -f /root/.my.cnf || exit 1
must_have ()
{
# Here, using "which" would not be appropriate since it also depends on
# PATH being set correctly. The type builtin command is unaffected by the
# environment.
type $1 >/dev/null
if [ $? -ne 0 ]; then
echo "Command '$1' not found, did you correctly set PATH ? Its current value is: $PATH" >&2
exit 1
fi
}
# Since this script is doing something rather unsafe with the database, we want
# to be really careful to have all the necessary tools before doing anything so
# that we don't end up in an inconsistent state.
must_have sleep
must_have mysql
must_have killall
must_have ls
must_have chown
rootpw=$(grep password /root/.my.cnf | sed -e 's/^[^=]*= *\(.*\) */\1/')
2009-12-10 18:22:25 +01:00
/usr/bin/mysqladmin -uroot --password="${rootpw}" status > /dev/null && echo "Nothing to do as the password already works" && exit 0
2009-12-10 18:22:25 +01:00
/etc/init.d/mysql stop
/usr/sbin/mysqld --skip-grant-tables --user=root --datadir=/var/lib/mysql --log-bin=/var/lib/mysql/mysql-bin &
sleep 5
mysql -u root mysql <<EOF
UPDATE mysql.user SET Password=PASSWORD('$rootpw') WHERE User='root' AND Host='localhost';
DELETE FROM mysql.user WHERE (User='root' AND Host!='localhost') OR USER='';
FLUSH PRIVILEGES;
EOF
2009-12-10 18:22:25 +01:00
killall mysqld
sleep 15
2009-12-10 18:22:25 +01:00
# chown to be on the safe side
ls -al /var/lib/mysql/mysql-bin.* &> /dev/null
[ $? == 0 ] && chown mysql.mysql /var/lib/mysql/mysql-bin.*
2013-12-04 23:19:09 +01:00
chown -R mysql.mysql /var/lib/mysql/data/
2009-12-10 18:22:25 +01:00
/etc/init.d/mysql start