使用 bash 脚本更改 MySQL 根密码

Jim*_*Jim 4 mysql bash

我正在尝试创建一个 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"'
Run Code Online (Sandbox Code Playgroud)

上面更改 root 密码的语法可能不正确,但我坚持的部分是生成一个单行命令来使用 mysql,如果该命令超过 2 行,则输入 MySQL 提示符,并在一旦使用'exit'命令关闭MySQL提示符,就会执行bash脚本。

我的目的是通过 bash 脚本收集相关密码信息,运行单个命令更改 root 密码,然后返回到 bash 脚本,或者 bash 提示脚本已结束。

Cat*_*nes 9

使用 mysqladmin 而不是在 mysql 中运行查询。

mysqladmin -u root -p'$oldrootpass' password '$newrootpass'

应该可以工作,但您可能需要稍微弄乱引号。


l0b*_*0b0 5

如果您要问如何使用单个mysql命令运行多个语句,您可以简单地用分号分隔它们:

$ mysql -e 'select 1; select 2'
+---+
| 1 |
+---+
| 1 |
+---+
+---+
| 2 |
+---+
| 2 |
+---+
Run Code Online (Sandbox Code Playgroud)

或者您可以创建一个包含 SQL 语句的文件并运行:

$ mysql < change_password.sql
Run Code Online (Sandbox Code Playgroud)