您需要使用该
-p标志来发送密码。这很棘手,因为您
-p和密码之间必须没有空格。
$ mysql -h "server-name" -u "root" "-pXXXXXXXX" "database-name" < "filename.sql"
如果在空格之后
-p使mysql客户端以交互方式提示您输入密码,然后将下一个命令参数解释为数据库名称,则使用空格:
$ mysql -h "server-name" -u "root" -p "XXXXXXXX" "database-name" < "filename.sql"Enter password: <you type it in here>ERROR 1049 (42000): Unknown database 'XXXXXXXX'
实际上,我更喜欢将用户名和密码存储在〜/ .my.cnf中,因此我根本不必将其放在命令行中:
[client]user = rootpassword = XXXXXXXX
然后:
$ mysql -h "server-name" "database-name" < "filename.sql"
发表您的评论:
我一直在命令行和shell脚本中始终运行上述类似的批处理模式mysql命令。很难诊断Shell脚本出了什么问题,因为您尚未共享确切的脚本或任何错误输出。我建议您在上面编辑您的原始问题,并提供发生问题的示例。
另外,在对shell脚本进行故障排除时,我使用该
-x标志,以便查看其如何执行每个命令:
$ bash -x myscript.sh



