Как я могу выполнить удаленные 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 ... для местного хозяина.

Другие вопросы по тегам