2017-05-31 82 views
0

我試圖使用以下命令將SQL文件導入MySQL數據庫;當數據庫名稱包含下劃線時,無法導入SQL文件

mysql --user example -p --database example_database < example.sql 

這將返回錯誤:

ERROR 1044 (42000) at line 22: Access denied for user 'example'@'%' to database 'example' 

通知數據庫名稱已經下劃線後修剪一切。連接的詳細信息完全正確,我可以使用下面的命令連接到MySQL:

mysql --user example -p --database example_database 

任何想法,爲什麼發生這種情況?

回答

1

一個可能的解釋對於觀察到的行爲是example.sql文件包含聲明:

USE example; 

執行該語句時拋出該錯誤,因爲用戶'example'@'%'未被授予該數據庫的特權。

(我不相信一個下劃線字符前右--database期權價值被修剪。有關數據庫名下劃線的猜想是紅鯡魚)。

+0

是的,就是這樣。我使用'mysqldump --databases示例'導出了SQL,其中包含'USE'語句。在數據庫名稱解決問題之前導出沒有「--databases」選項。謝謝! – smilledge

0

編輯在下面添加註釋:

它看起來像它指的是要導入到數據庫example.sql。您是否首先將該example.sql數據庫的「示例」用戶授予了所有權限?像

GRANT ALL PRIVILEGES ON example.* TO 'example'@'%' WITH GRANT OPTION;


東西嘗試用把``周圍的數據庫名稱_在它

mysql --user example -p --database `example_database` < example.sql 

這應該允許您導入全名

+0

完全同樣的錯誤。我應該提到,我嘗試過以我能想到的方式引用和指定參數。 '-D \'example_database \'','--database = example_database','--database =「example_database」','--database =「example \ _database」'等等,並且都返回了相同的結果。 – smilledge

+0

哦!現在我明白了,您是否已經首先授予了您要爲示例用戶導入的example.sql數據庫的所有權限? '例如'授予所有特權*到'example'@'%'授予選項;' – phandolin

相關問題