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

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

Stack Overflow用户
提问于 2012-12-11 13:50:49
回答 4查看 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

回答 4

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用户

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

按照MvG的建议(在MySQL手册4.2.2 connecting6.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用户

发布于 2014-01-21 09:10:20

下面是一个小的bash脚本,您可以使用它来快速获得一个shell

它打开一个shell,以便您可以手动执行查询。非常方便。

代码语言:javascript
复制
  #!/bin/bash
  DB_USER='your_db_username'
  DB_PASS='your_password'
  DB='database_name'
  echo 'logging into db $DB as $DB_USER'
  mysql -u "$DB_USER" --password="$DB_PASS" --database="$DB"
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13814413

复制
相关文章

相似问题

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