Ответ 1
Попробуйте следующее:
mysql -h host -u root -proot -e "show databases;";
Я пытаюсь выполнить запрос MySQL на удаленном компьютере с помощью этой команды:
ssh [email protected] "mysql -uroot -proot -e \"use test";""
Я не могу использовать эту базу данных.
Пожалуйста, предложите рабочую команду.
Попробуйте следующее:
mysql -h host -u root -proot -e "show databases;";
Попробуйте следующее:
ssh [email protected] "mysql database -e 'query to run on table_name; more queries to run;'"
То же самое можно сделать с помощью [email protected]
, если у этого пользователя есть разрешение на выполнение SQL-запросов, не говоря уже о запуске mysql в целом. Использование -e
совпадает с --execute
, которое будет запускать все, что вы помещаете в трейлинг-кавычки (один или два), и выйти. Стандартный формат вывода будет таким же, как вы видели с помощью --batch
.
MySql, похоже, имеет специальный синтаксис командной строки, который включает в себя базу данных.
mysql -u user -p -e База данных SQL Query
Эта документация довольно старая, но я получил ее для работы
http://www.cyberciti.biz/faq/run-sql-query-directly-on-the-command-line/
Заключительная рабочая команда с ssh:
ssh user @host "mysql -u user -e 'show tables;' имя_базы_данный"
Это сработало для меня в скрипте bash:
query='USE [database]; SELECT ...'
mysql='mysql -u [username] -p[password] -e '"'""$query""'"
ssh [username]@[server] -t "$mysql"
Если вы хотите сделать его более безопасным, добавьте подсказку для пароля вместо того, чтобы хранить его где-то потенциально небезопасно.
Это сработало для меня после нескольких тестов (в основном тот же ответ, что и у @King-Wzrd):
ssh -t kom "mysql -uroot -p -e 'show databases;'"
ssh -t kom "mysql -uroot -p < /home/ling/websites/jin_test/.deploy/tmp.sql"
"Уловка" заключалась в кавычках вокруг команды.
Параметр -t позволяет запрашивать пароль в интерактивном режиме через удаленную оболочку.
kom здесь - это просто идентификатор конфигурации ssh, определенный в моем файле ~/.ssh/config (подробнее здесь: https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/).