Как я могу выполнить удаленные MySQL запросы через скрипт оболочки, не вставляя открытый текстовый пароль в мой скрипт?
Я бы предпочел не выполнять запрос в сценарии оболочки с открытым текстовым паролем.
#!/bin/bash
mysql -uuser -hremotehost -pmypassword -e "update my_table set what_time = NOW()";
Есть ли способ поставить mypassword
в моем местном /etc/my.cnf
файл или что-то еще, чтобы держать его вне командной строки открытого текста?
Предположим, мой remotehost
не принимает пароль для MySQL.
3 ответа
Решение
Как написано на dba, можно настроить my.cnf
файл как следующее:
[clienthost1] # Note: client + host1
user=user
password=mypassword
host=remotehost
и запустить его как:
mysql --defaults-group-suffix=host1
Кудус Дерек Дауни ответ в DBA
Другой вариант - использовать mysql_config_editor и хранить данные в зашифрованном файле.
Пример:
mysql_config_editor set --user=user --password --host=remotehost
Enter password:
ОБНОВЛЕННЫЙ ОТВЕТ
Создайте ~/.my.cnf
файл и поместите в него следующее:
[foo]
user=user
password=mypassword
host=remotehost
[bar]
user=user2
password=some-other-password
host=127.0.0.1
Затем вызвать mysql --login-path=foo ...
подключиться к remotehost
или же mysql --login-path=bar ...
для местного хозяина.