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

时间:2014-02-13 06:54:17

标签: mysql shell

从shell脚本连接MySQL DB时遇到问题。请找到我为连接MySQL数据库而编写的以下代码段。请在此建议。

我的shell脚本:

      #!bin/bash
       Query="select * from Main"
       MySQL -u root -p '!!root!!' -e kpi << EOF
       $Query;
       EOF

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

2 个答案:

答案 0 :(得分:1)

我认为应该是

-pThePassword

所以你应该删除-p和传球之间的空格。此外,你不应该使用撇号(除了它是传递本身的一部分。使用反斜杠来逃避特殊字符。

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

<强>更新

您也可以尝试将密码输入文件并使用脚本

进行阅读
mysql -u root -p`cat /tmp/pass` -e "SHOW DATABASES"

文件/tmp/pass应该包含您的密码,最后没有任何换行符。

更新2

你的剧本错了。

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

    方法一:

    mysql -u root -ppassword databasename -e "SELECT * FROM main"
    

    方法二:

    mysql -u root -ppassword databasename << EOF
    SELECT * FROM main
    EOF
    

    方法三:

    mysql -u root -ppassword << EOF
    USE databasename;
    SELECT * FROM main;
    EOF
    

答案 1 :(得分:0)

mysql --user=root --password=xxxxxx  -e "source dbscript.sql"

这适用于Windows和Linux。

如果密码内容包含!(感叹号),则应在其前面添加\(反斜杠)。