我正在编写一个bash脚本,它打开mysql,执行一些操作,然后将其关闭。
我担心/usr/bin/mysqladmin ping -h 127.0.0.1 --silent
不是一种安全的方法。如何确保mysql处于打开或关闭状态,以便继续操作?
附注:这是docker容器,所以我没有service
。
if [[ ! -f /var/lib/mysql/status.secured ]]; then
echo "Starting MariaDB... to secure it!"
/usr/bin/mysqld_safe
while ! /usr/bin/mysqladmin ping -h 127.0.0.1 --silent; do
sleep 1
done
mysqladmin -u root password "$DATABASE_PASS"
mysql -u root -p"$DATABASE_PASS" -e "UPDATE mysql.user SET Password=PASSWORD('$DATABASE_PASS') WHERE User='root'"
mysql -u root -p"$DATABASE_PASS" -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')"
mysql -u root -p"$DATABASE_PASS" -e "DELETE FROM mysql.user WHERE User=''"
mysql -u root -p"$DATABASE_PASS" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'"
mysql -u root -p"$DATABASE_PASS" -e "FLUSH PRIVILEGES"
touch /var/lib/mysql/status.secured
mysqladmin -u root -p"$DATABASE_PASS" -h 127.0.0.1 --protocol=tcp shutdown
while /usr/bin/mysqladmin ping -h 127.0.0.1 --silent; do
sleep 1
done
fi
我特别担心关机部分,也许检查一下PID
是否存在更好?还是grep
ps aux
?
发布于 2016-07-29 21:56:23
我可以推荐两个选项来尝试:
使用mysqladmin
并检查退出状态
mysqladmin -h server_ip -u username -p passsword processlist
if [ $? -ne 0 ] then; ... system down
使用grep
并检查process mysql
STATUS=$(grep mysql | wc -l);
if [ "STATUS" -ne 1 ] then; ... system down
https://stackoverflow.com/questions/38660125
复制相似问题