首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从shell脚本自动登录MySQL?

问如何从shell脚本自动登录MySQL?
EN

Stack Overflow用户
提问于 2012-12-11 13:50:49
回答 5查看 67.1K关注 0票数 30

我有一个MySQL服务器,其中一个用户有一个密码。我想在shell脚本中执行一些SQL查询,而不指定密码,如下所示:

config.sh

代码语言:javascript
复制
MYSQL_ROOT="root"
MYSQL_PASS="password"

mysql.sh

代码语言:javascript
复制
source config.sh
mysql -u$MYSQL_ROOT -p$MYSQL_PASS -e "SHOW DATABASES"

如何简化整个过程,以便在不指定-p和-u参数的情况下执行SQL查询?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-11 14:00:27

试试这个:

代码语言:javascript
复制
if [ $MYSQL_PASS ]
then
  mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"
else
  mysql -u "$MYSQL_ROOT" -e "SHOW DATABASES"
fi
票数 15
EN

Stack Overflow用户

发布于 2012-12-11 13:55:10

编写这些选项的替代方法。

你可以写

代码语言:javascript
复制
mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"

如果给定了password,则--password=或-p与其后面的密码之间不得有空格。如果未指定密码选项,则默认为不发送密码。

将空字符串作为单独的参数传递。不过,您在下面的注释表明,客户端仍将要求输入密码。它可能会将空参数解释为数据库名称,而不是密码。因此,您可以尝试执行以下操作:

代码语言:javascript
复制
mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "SHOW DATABASES"

.my.cnf文件

但是,即使有办法,我仍然建议您使用~/.my.cnf文件。命令行上的参数可能包含在由ps -A -ocmd生成的进程列表中,因此其他用户可以看到它们。另一方面,只有您(使用chmod 0600 ~/.my.cnf)可以(也应该)将.my.cnf文件设置为可读,并将自动使用该文件。使该文件包含以下行:

代码语言:javascript
复制
[client]
user=root
password=

然后,一个简单的mysql -e "SHOW DATABASES"就足够了,因为客户端将从该文件中获取其凭据。

有关提供密码的各种方式及其各自的优点和缺点,请参阅6.1.2.1. End-User Guidelines for Password Security。有关此.my.cnf文件的一般信息,请参阅4.2.3.3. Using Option Files

票数 55
EN

Stack Overflow用户

发布于 2014-11-01 01:35:51

按照MvG的建议(在MySQL手册4.2.2 connecting和6.1.2.1 security guidelines中推荐),您应该使用文件。命令行上的密码可能不安全,因为ps可能会将其显示给其他用户。该文件不必是.my.cnf,可以是临时文件中脚本的即席选项文件:

代码语言:javascript
复制
OPTFILE="$(mktemp -q --tmpdir "${inname}.XXXXXX")$"
trap 'rm -f "$OPTFILE"' EXIT
chmod 0600 "$OPTFILE"
cat >"$OPTFILE" <<EOF
[client]
password="${MYSQL_PASS}"
EOF
mysql --user="$MYSQL_ROOT" --defaults-extra-file="$OPTFILE" -e "SHOW DATABASES"

第一行创建一个安全的临时文件,然后放入选项,然后使用它。陷阱将保护你不受OPTFILE的影响,以防中断。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13814413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档