2017-05-25 85 views
0

我有一個奇怪的問題。我想通過命令行導入sql文件。命令看起來像通過命令行將sql文件導入到mysql中

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

但是,如果在命令中顯式鍵入密碼,它什麼也不做。沒有錯誤,但也沒有行動。只有當密碼爲空時,它才能按預期工作(但我需要將它輸入到命令行中)。但我想在命令中輸入密碼。它是自動觸發的腳本的一部分。密碼來自phinx.yml配置文件。有沒有辦法用密碼輸入?

回答

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節「密碼安全的最終用戶指南」。您可以使用選項文件來避免在命令行上輸入密碼。

+0

我認爲它像mysql命令一樣工作。沒有錯誤,但也沒有行動。 –

+0

當您使用-p時,您需要確保它與「-psecrect」或「--password = secrect」一樣 – RYJ

+0

是的問題出現在-p之後的空間中。謝謝。由於安全性,我將不得不以另一種方式來做。 –

0
  • 上述兩種方法是不安全的。您可以將密碼放在另一個選項文件中。詳細信息在這裏:https://dev.mysql.com/doc/refman/5.7/en/password-security-user.html `>將密碼存儲在選項文件中。例如,在Unix上,你可以列出在.my.cnf文件的[客戶]部分您的密碼在你的主目錄:

    [客戶] 密碼= your_pass 爲保證密碼安全,除了您自己以外,任何人都無法訪問該文件。爲了確保這一點,設置文件訪問模式400或600。例如:

    殼>搭配chmod 600 .my.cnf 到命令行命名包含密碼的特定選項文件,使用--defaults- file = file_name選項,其中file_name是該文件的完整路徑名。例如:

    殼>的mysql --defaults文件= /家庭/弗朗西斯/ MySQL的,選擇採用 第4.2.6節,「使用選項文件」,討論了選項文件的更多detail.`

  • 使用expect。 「男人期待」。 http://www.admin-magazine.com/Articles/Automating-with-Expect-Scripts

  • +0

    phinx.yml配置文件是否足夠安全?我寫了關於它的問題。 –

    +0

    這很難說,因爲它取決於如何保存sphinx.yml文件以及該文件的權限。但將數據庫密碼作爲明文存儲在文件中始終是不安全的。 – RYJ

    相關問題