0

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

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

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

4

2 回答 2

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

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

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

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

于 2017-05-25T20:35:44.993 回答
0
  1. 以上两种方式都不安全。您可以将密码放在另一个选项文件中。详细信息在这里:https://dev.mysql.com/doc/refman/5.7/en/password-security-user.html `> 将您的密码存储在选项文件中。例如,在 Unix 上,您可以在主目录中 .my.cnf 文件的 [client] 部分列出您的密码:

    [client] password=your_pass 为了保证密码安全,除了您自己之外,任何人都不能访问该文件。为确保这一点,请将文件访问模式设置为 400 或 600。例如:

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

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

  2. 使用期望。“男人期待”。http://www.admin-magazine.com/Articles/Automating-with-Expect-Scripts

于 2017-05-25T21:02:20.763 回答