Оберните инструмент CLI вокруг интерактивного процесса CLI (mysql) - PullRequest
0 голосов
/ 12 мая 2018

Я сделал простой инструмент CLI для управления привилегиями mysql. Он написан на PHP и использует PHP-библиотеку для общения с MySQL. Первое, что нужно инструменту, - это учетные данные mysql, потому что PHP-библиотекам нужны те, чтобы общаться с демоном mysql (возможно, на том же сервере). Это работает, НО

Мне нужно, чтобы он работал без учетных данных. На некоторых серверах я могу запустить mysql только с sudo mysql, а затем войти в систему как root mysql. Это тоже хорошо, но мой инструмент не может это использовать.

Могу ли я обернуть свой инструмент вокруг клиента mysql вместо инициализации клиента mysql внутри инструмента?

Если я могу это сделать, инструмент работает с любым методом аутентификации:

  • sudo mysql | tool
  • mysql --login-path=~/.mysql-creds | tool
  • mysql -ufoo -pbar | tool
  • mysql -hdb.server.com -upublic | tool

Но как? Как мне заставить инструмент говорить с процессом вокруг него или вне его?

Я мог бы использовать функции PHP proc для запуска процесса в PHP и чтения / записи оттуда, но я заинтересован в любом инструменте для любого процесса, не зная имя / местоположение процесса. (Инструмент не должен знать mysql -ufoo -pbar или sudo mysql.)

Это не работает:

  • mysql | tool
  • mysql < tool
  • tool < mysql

Или без PHP. Как бы Python сделал это? Или даже Баш?

...