首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待mysql上线,执行命令,然后在bash中优雅地将其关闭

等待mysql上线,执行命令,然后在bash中优雅地将其关闭
EN

Stack Overflow用户
提问于 2016-07-29 21:27:03
回答 1查看 100关注 0票数 0

我正在编写一个bash脚本,它打开mysql,执行一些操作,然后将其关闭。

我担心/usr/bin/mysqladmin ping -h 127.0.0.1 --silent不是一种安全的方法。如何确保mysql处于打开或关闭状态,以便继续操作?

附注:这是docker容器,所以我没有service

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-29 21:56:23

我可以推荐两个选项来尝试:

使用mysqladmin并检查退出状态

代码语言:javascript
运行
复制
mysqladmin -h server_ip -u username -p passsword processlist
if [ $? -ne 0 ] then; ... system down

使用grep并检查process mysql

代码语言:javascript
运行
复制
STATUS=$(grep mysql | wc -l);
if [ "STATUS" -ne 1 ] then; ... system down
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38660125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档