我有一点奇怪的问题。我想通过命令行导入sql文件。命令看起来像
mysql -u root -p root pdweb-sandbox < C:\Apache24\htdocs\pdweb-sandbox\migrations/init.sql
但如果在命令中明确输入了密码,它什么都不做。没有错误但也没有动作。只有当密码为空时,它才能按预期工作(但我需要在命令行输入密码)。但我想在命令中输入密码。它是自动触发的脚本的一部分。密码来自phinx.yml配置文件。有没有办法在命令中使用密码?
答案 0 :(得分:1)
您可以通过多种方式在脚本中执行此操作:
使用mysqlimport。你可以在这里找到详细信息。 https://www.toadworld.com/platforms/mysql/w/wiki/6152.mysql-importing-with-mysqlimport
使用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)
以上两种方式并不安全。您可以将密码放在另一个选项文件中。详细信息如下: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节“使用选项文件”更详细地讨论了选项文件。
使用expect。 &#34;男人期待&#34;。 http://www.admin-magazine.com/Articles/Automating-with-Expect-Scripts