使用 bash 脚本更改 MySQL root 密码

使用 bash 脚本更改 MySQL root 密码

我正在尝试创建一个 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'

应该可以工作,但是你可能需要稍微调整一下引号。

相关内容