我正在尝试创建一个 bash 脚本来更改 MySQL 根密码,下面是我正在使用的当前代码片段:
#!/bin/sh
clear
echo "Enter the current password for the root mysql account."
read oldrootpass
echo "Enter a new password for the root mysql account."
read newrootpass
mysql -u root -p$oldrootpass -Bse 'UPDATE user SET password=PASSWORD("$newrootpass") WHERE User="root"'
上述用于更改 root 密码的语法可能不正确,但我遇到的问题是如何生成一行命令来与 mysql 一起工作,如果该命令超过 2 行,则会输入 MySQL 提示符,并且在使用“exit”命令关闭 MySQL 提示符后,将执行 bash 脚本中的 MySQL 命令。
我的目的是通过 bash 脚本收集相关密码信息,运行单个命令来更改 root 密码,然后返回 bash 脚本,或者 bash 提示符表示脚本已经结束。
答案1
如果您询问如何使用单个命令运行多个语句mysql
,您可以简单地用分号分隔它们:
$ mysql -e 'select 1; select 2'
+---+
| 1 |
+---+
| 1 |
+---+
+---+
| 2 |
+---+
| 2 |
+---+
或者您可以创建一个包含 SQL 语句的文件并运行该文件:
$ mysql < change_password.sql
答案2
使用 mysqladmin 而不是在 mysql 中运行查询。
mysqladmin -u root -p'$oldrootpass' password '$newrootpass'
应该可以工作,但是你可能需要稍微调整一下引号。