通过命令行将sql文件导入mysql

时间:2017-05-25 20:22:39

标签: mysql command-line import phinx

我有一点奇怪的问题。我想通过命令行导入sql文件。命令看起来像

mysql -u root -p root pdweb-sandbox < C:\Apache24\htdocs\pdweb-sandbox\migrations/init.sql

但如果在命令中明确输入了密码,它什么都不做。没有错误但也没有动作。只有当密码为空时,它才能按预期工作(但我需要在命令行输入密码)。但我想在命令中输入密码。它是自动触发的脚本的一部分。密码来自phinx.yml配置文件。有没有办法在命令中使用密码?

2 个答案:

答案 0 :(得分:1)

您可以通过多种方式在脚本中执行此操作:

  1. 使用mysqlimport。你可以在这里找到详细信息。 https://www.toadworld.com/platforms/mysql/w/wiki/6152.mysql-importing-with-mysqlimport

  2. 使用mysql,有关如何使用它的详细信息如下(从https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_password复制)

      

    - 密码[=密码], - p [密码]

         

    连接服务器时使用的密码。如果使用短选项表单(-p),则选项和密码之间不能有空格。如果省略命令行上--password或-p选项后面的密码值,mysql会提示输入密码值。

         

    在命令行上指定密码应视为不安全。请参见第6.1.2.1节“密码安全的最终用户指南”。您可以使用选项文件来避免在命令行上提供密码。

答案 1 :(得分:0)

  1. 以上两种方式并不安全。您可以将密码放在另一个选项文件中。详细信息如下:https://dev.mysql.com/doc/refman/5.7/en/password-security-user.html `&GT;将密码存储在选项文件中。例如,在Unix上,您可以在主目录的.my.cnf文件的[client]部分列出您的密码:

      

      

    [客户]   密码= your_pass的   为了确保密码安全,除了您自己之外,任何人都无法访问该文件。要确保这一点,请将文件访问模式设置为400或600.例如:

         

    壳&GT; chmod 600 .my.cnf   要从命令行命名包含密码的特定选项文件,请使用--defaults-file = file_name选项,其中file_name是文件的完整路径名。例如:

         

    壳&GT; mysql --defaults-file = / home / francis / mysql-opts   第4.2.6节“使用选项文件”更详细地讨论了选项文件。

  2. 使用expect。 &#34;男人期待&#34;。 http://www.admin-magazine.com/Articles/Automating-with-Expect-Scripts