LINUX.ORG.RU

Скрыть пароль в списке процессов


0

0

Запускаю mysqldump -uuser -ppassword, из perl.
В этот момент в списке процессов (htop), виден пароль в параметрах запуска. Иногда пароль заменяется звездочками, но не всегда. Подскажите как спрятать пароль, или научить чтобы он всегда был закрыт звездочками.

man mysql:
"
--password[=password], -p[password]

The password to use when connecting to the server. If you use the short option form (-p), you cannot have a space between the option and the password. If you omit the password value following the --password or -p option on the command line, mysql prompts for one.

Specifying a password on the command line should be considered insecure. See Section 5.3.2.2, “End-User Guidelines for Password Security”. You can use an option file to avoid giving the password on the command line.
"

Другими словами, укажите вместо пароля путь к файлу, в котором содержится пароль.

Slavaz ★★★★★
()
user@host:~$ export MYSQL_USER dbuser
user@host:~$ export MYSQL_PASSWORD dbpassword
user@host:~$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
vognev
()

Пропиши в файл конфигурации и укажи на него mysqldump'у одной из опций

--defaults-file=# Only read default options from the given file
--defaults-extra-file=# Read this file after the global files are read

sdio ★★★★★
()
Ответ на: комментарий от sdio

спасибо, а вот такой вариант вполне работает

~ :$mysql --defaults-extra-file=~/.my.wow.cnf
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2732
Server version: 5.0.90 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \q
Bye
~ :$cat .my.wow.cnf
[client]
user = тута_имя
password = тута_что_то
port = 3306
host = сервер.имя

Sylvia ★★★★★
()
Ответ на: комментарий от xorik

for i in `ls *.sql` ; do echo merging patch $i ; mysql -u user -p mydb ; done


если там будет этак 150 файлов, 150 раз пароль вводить ?)

xargs и cat *.sql не вариант, потому что некоторые *.sql могут содержать ошибки , но это не должно прерывать процесс

Sylvia ★★★★★
()
Ответ на: комментарий от xorik

>Запускаю mysqldump -uuser -ppassword, из perl.

а вдруг он с крона запускает? -p требует интерактивный ввод

А кучу sql файлов можно cat-ом в один объединить


написала же что не вариант в моем случае был )
там было около 1000 патчей на БД, нужно было наложить все которые могли наложиться, т.е. часть .sql выдавали ошибки (некритичные для конечной базы) из-за которых обьединять было все это нельзя

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Ладно сдаюсь, я про перл не прочитал :)

xorik ★★★★★
()
Ответ на: комментарий от Sylvia

ну там да, а переменные окружения с которыми запущен процесс также можно увидеть в `ps -ex`, так что топикстартера ничего не спасет, кроме самописного бота

wfrr ★★☆
()
Ответ на: комментарий от wfrr

>переменные окружения с которыми запущен процесс также можно увидеть в `ps -ex`

только root и тот же пользователь,
остальные пользователи (например shared хостинга) не видят environment


ничего не спасет


http://www.linux.org.ru/jump-message.jsp?msgid=4821407&cid=4821634
http://www.linux.org.ru/jump-message.jsp?msgid=4821407&cid=4821647

игнорите sdio? )

Sylvia ★★★★★
()
Ответ на: комментарий от wfrr

у ТС он изначально в скрипте, который тоже файл,
так что невелика будет разница хранить пароль в скрипте,
или в некоем файле с mode 400 или 600

Sylvia ★★★★★
()
Ответ на: комментарий от wfrr

wfrr> просто исхожу из того что нехорошо хранить пароли в файлах 8)

cat passwd.txt не ты писал? passwd.txt не файл что-ли?

sdio ★★★★★
()
Ответ на: комментарий от Sylvia

> xargs и cat *.sql не вариант, потому что некоторые *.sql могут содержать ошибки , но это не должно прерывать процесс

cat *.sql | mysql -uuser -p -Ddatabase --force

:-)

sjinks ★★★
()
Ответ на: комментарий от sdio

Уважаемый

догадайтесь что в скрипте пароль можно один раз прочитать со стандартного ввода и долбить им туппую мускулину, это раз. А два вы должны сами догадаться.

wfrr ★★☆
()
Ответ на: комментарий от sjinks

ну можно конечно и с --force

а если такой вариант что

.sql это некий патч, который содержит первым запросом запись о своей версии

ALTER TABLE db_version CHANGE COLUMN required_979 required_980 bit;

соответственно если версия не подходит, то хотелось бы чтобы дальнейшие запросы из данного файла не выполнялись, так что вариант с обьединением всего в 1, как без --force так и с ним не подходит никак. только вызывать mysql

ls -l | wc -l

1449

раз

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

> соответственно если версия не подходит, то хотелось бы чтобы дальнейшие запросы из данного файла не выполнялись

Я конечно не знаю сути проблемы, но если один такой патч нормально не лег, то остальные я накладывать не рискнул бы.

Но тогда да, только --defaults-extra-file=... либо пароль в командной строке

sjinks ★★★
()
Ответ на: комментарий от sjinks

>Я конечно не знаю сути проблемы, но если один такой патч нормально не лег, то остальные я накладывать не рискнул бы.

такой проект уж... Про то на что там идут вендузятники я описывать не буду )

только --defaults-extra-file=...


теперь буду так, спасибо sdio

либо пароль в командной строке

так было и устраивало, но не совсем красиво , хотя и доступа нет ни у кого кроме меня

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Есть еще вариант: создать файл ~/.my.cnf

[mysql]
username=...
password=...

Тогда mysql будет его по умолчанию читать; соответственно, не нужно будет задавать имя/пароль в командной строке. Только права на этот файл лучше 0400 поставить.

sjinks ★★★
()
Ответ на: комментарий от Sylvia

Спасибо огромное всем отписавшимся, не ожидал что возникнет такой резонанс (думал что задача тривиальна). В общем запускаю perl скрипт по крону, скрипт делает бэкап баз, запускаю через system(«mysqldump -u$user -p$passw $table > $mysql_file»).

Если честно уже немного запутался в советах, понял так что лучше не передавать пароль в командной строке, а ждать запроса и писать пароль в поток запущенного mysqldump? или как?

meta-com
() автор топика
Ответ на: комментарий от sjinks

да, если 1 пользователь , или пользователь по умолчанию


если разные ( у меня например разные db и разные user для разных задач ), то лучше делать отдельный файл/

0400

нет смысла ограничивать в него запись. 0600 )

Sylvia ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.