2014-02-10 3 views
0

Поэтому я хочу, чтобы моя трубу NETSTAT вывода в базу данных MySQLЗапуск команды MySql из терминала не работает

План состоит в том, чтобы сделать это непрерывное событием кронтаба. Таким образом, я могу хранить эти данные и использовать их в другом месте легко.

Я догадался, прежде чем я смогу понять, что часть, хотя мне нужно выяснить, как запустить команду SQL из терминала.

Это кажется довольно прямо вперед

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

Это, однако, не работает ...

При запуске этого он печатает MYSQL Помощь

Когда я запускаю это, хотя

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

все работает отлично, оно просто подсказывает мне пароль

Теперь я не знаю, имеет ли это значение или нет, но мой пароль БД имеет в нем восклицательные знаки. Это также более 15 символов

Может ли это быть проблемой?

+0

Вы пытаетесь выполнить команду первой (не работоспособной) в оболочке или с помощью кронтаба? Кроме того, я не вижу, где вы указываете БД для работы (если это необходимо для вашего SQL, конечно) –

+0

Я попытался сделать это с терминала, и команда, в которой я запускалась, была SHOW DATABASES –

+0

Ваш синтаксис (с 'SHOW DATABASES ') является правильным (и работает хорошо). Поэтому у меня есть две догадки. Сначала - ваш пароль содержит специальные символы и должен быть экранирован, чтобы использоваться внутри '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 является ПОДСКАЖИТЕ, пароль не нужно быть связаны между собой, но должны быть отделены от него:

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

EDIT: Если ваш реальный пароль содержит специальные символы, вам необходимо их избежать.

+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"

Смежные вопросы