2014-02-10 57 views
0

所以我想管我的netstat輸出到mysql數據庫從終端運行MySql命令不工作

該計劃是使它成爲一個連續的crontab事件。這樣我就可以存儲這些數據並輕鬆地在別處使用它。

我想到之前我可以找出那部分,但我需要弄清楚如何從終端運行SQL命令。

看來相當直截了當

sudo mysql -u username -pMYPassword -e "SQL COMMAND" 

然而,這並不工作...

當我運行這個它打印MYSQL幫助

當我運行這雖然

sudo mysql -u username -p -e "SQL COMMAND" 

一切正常完美,它只是提示我輸入密碼

現在我不知道它是否有所作爲,但我的數據庫密碼確實有感嘆號。它也是超過15個字符長

這些都可能是一個問題?

+0

你們是不是在外殼或通過crontab來執行第一(非工作)命令?我也沒有看到你指定數據庫的操作位置(當然,如果這對你的SQL是必需的) –

+0

我試着從終端執行它,而我運行的命令是SHOW DATABASES –

+0

你的語法(使用'SHOW DATABASES ')是正確的(並且運作良好)。所以我有兩個猜測。首先 - 您的密碼包含特殊的symbpols,需要轉義才能在'crontab'中使用。第二 - 你沒有保存你的輸出,因此,如果一切順利的話,不能實現 –

回答

1
mysql -u user -p -e 'SQL Query' database 

其中,

-u : Specify mysql database user name 
-p : Prompt for password 
-e : Execute sql query 
database : Specify database name 

所以-​​p選項是PROMPT,密碼不需要被鏈接,但離不開它:

sudo mysql -u username -p'PassWord' -e 'SELECT COUNT(*) FROM my_table' 

編輯:如果您的真實密碼包含特殊字符,您需要將其轉義。

+0

所以這個答案確實有效,但-p標誌和密碼之間沒有空格。 –

+0

通過「分離」我的意思是不加入選項-p的密碼,引號是這種分離的標誌,儘管兩個選項都可以工作,在-p之後有或沒有空格,但是引號是強制性的。 – bodi0

+0

我用一個空格試了一下,它提示我輸入密碼,好像我根本沒有輸入密碼 –

0

也許嘗試:sudo mysql -u username -p'MYPassword' -e "SQL COMMAND"

或者:sudo mysql -u username --password=MyPassword -e "SQL COMMAND"