首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用shell脚本连接mysql数据库

无法使用shell脚本连接mysql数据库
EN

Stack Overflow用户
提问于 2014-02-13 06:54:16
回答 2查看 3.3K关注 0票数 0

我面临着从MySQL脚本连接DB的问题。请找到下面我为连接MySQL数据库而编写的代码片段。请对此提出建议。

我的外壳脚本:

代码语言:javascript
复制
      #!bin/bash
       Query="select * from Main"
       MySQL -u root -p '!!root!!' -e kpi << EOF
       $Query;
       EOF

请检查以上代码,并建议我如何连接数据库。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-13 06:55:50

我觉得应该是

-pThePassword

因此,您应该删除-p和pass之间的空间。此外,您不应该使用撇号(除非它是传递本身的一部分)。使用反斜杠来转义特殊字符。

第二:*nix系统区分大小写,请尝试mysql而不是MySQL

更新

您还可以尝试在文件中键入密码并使用脚本读取密码。

代码语言:javascript
复制
mysql -u root -p`cat /tmp/pass` -e "SHOW DATABASES"

文件/tmp/pass应该包含您的密码,末尾不需要任何换行符。

更新2

你的剧本错了。

  1. 您可以使用mysql ... -e SELECT * FROM TABLEmysql ... << EOF (没有-e)。你不应该把它们混在一起。
  2. 不要忘记在sql中将数据库名作为参数(或使用use databasename;)传递。
  3. 如果您有多个语句,请不要忘记在每个sql命令之后添加一个;

方法一:

代码语言:javascript
复制
mysql -u root -ppassword databasename -e "SELECT * FROM main"

方法二:

代码语言:javascript
复制
mysql -u root -ppassword databasename << EOF
SELECT * FROM main
EOF

方法三:

代码语言:javascript
复制
mysql -u root -ppassword << EOF
USE databasename;
SELECT * FROM main;
EOF
票数 1
EN

Stack Overflow用户

发布于 2014-02-13 07:06:58

代码语言:javascript
复制
mysql --user=root --password=xxxxxx  -e "source dbscript.sql"

这应该适用于Windows和Linux。

如果密码内容包含一个! (感叹号),您应该在它前面添加一个\ (反斜杠)。

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

https://stackoverflow.com/questions/21747209

复制
相关文章

相似问题

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