Экранирование специальных символов в пароле mysql при выполнении запроса mysql на удаленном хосте - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь выполнить запрос mysql на удаленном хосте с помощью сценария bash.

${MYSQL} -u ${USER} -p${PASS} -P${PORT} -h ${HOST} -e "select * from information_schema;"

Мой PASS выглядит примерно как «dfsf # DFD». Он содержит символ "#". По некоторым причинам PASS не извлекается правильно в скрипте. Его обрубают после '#'.

И по какой-то причине включение source /etc/environment в скрипт, похоже, решает проблему. Я хочу понять, почему это происходит. Как заставить его работать без оператора source.

1 Ответ

0 голосов
/ 07 августа 2020

Насколько мне известно, самый безопасный способ указать детали удаленного подключения для MySQL - использовать файл конфигурации: https://dev.mysql.com/doc/refman/8.0/en/option-files.html Итак, вы просто поместите что-то вроде этого в ~ / .my.cnf file:

[client]
host='...'
port='...'
user='...'
password='...'

И затем вы просто запускаете

mysql -e "select * from information_schema;"

Не уверен, что это подходит вашей ситуации, но это должно решить вашу проблему, если вы укажете значения. Цитирование в командной строке также является решением, но ваши учетные данные будут видны всем, кто может видеть ваши процессы в системе, в которой вы их запускаете.

...