使用bash脚本更改MySQL root密码

我试图创build一个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"' 

以上用于更改根口令的语法可能不正确,但是我坚持的部分是生成一行命令以使用mysql,如果该命令超过2行,则inputMySQL提示符,并且MySQL命令在一旦MySQL提示已经用'exit'命令closures,就会执行bash脚本。

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

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

 $ mysql -e 'select 1; select 2' +---+ | 1 | +---+ | 1 | +---+ +---+ | 2 | +---+ | 2 | +---+ 

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

 $ mysql < change_password.sql 

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

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

应该可以工作,但你可能需要一点点的报价。