在 shell 脚本中使用密码

-1 password cron shell-script mysql

我想创建一个cron脚本来与mysql交互,例如

#!/bin/bash

mysql -uroot -p
echo root
echo "CREATE DATABASE example"
Run Code Online (Sandbox Code Playgroud)

但它不起作用,它只提示:

Enter password:
Run Code Online (Sandbox Code Playgroud)

当我退出 mysql 它显示

root
"CREATE DATABASE example"
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Sté*_*las 7

放一些类似的东西:

[client]
user=root
password="my-very-secret-password"
Run Code Online (Sandbox Code Playgroud)

在一个文件中,其权限确保有权阅读它的人之外的任何人都无法阅读它。

并运行:

#! /bin/sh -
mysql --defaults-extra-file=/path/to/that/file --batch << "EOF"
CREATE DATABASE example
EOF
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅MySQL 自己的指南

您可以将密码放在脚本中并限制对脚本本身的读取访问,但您还需要确保密码不会作为参数传递给任何命令,因为这会使其对输出中的任何人可见ps.

你可以这样做:

#! /bin/sh -
mysql --defaults-extra-file=/dev/fd/3 --batch 3<< "END_OF_AUTH" << "END_OF_SQL"
[client]
user=root
password="my-very-secret-password"
END_OF_AUTH
CREATE DATABASE example
END_OF_SQL
Run Code Online (Sandbox Code Playgroud)