суббота, 17 сентября 2011 г.

Учёт логинов в MySQL базе данных часть 2: поиск прямо из Bash

Собственно, как я и ожидал, учёт логинов в MySQL базе данных ужасно неудобен, когда надо срочно быстро вспомнить логин/пароль для какого-то сайта. Даже при наличии дополнительной функции find_login всё равно нужно сначала запускать mysql-клиента, заходить в базу данных... долго. Надо быстрее.


Создание агента для получения логинов/паролей из базы данных

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

Добавляем нового пользователя в MySQL-сессии:

create user fetcher;
grant execute on my.* to fetcher;
Здесь я подразумеваю, что таблица logins находится в базе данных my и я буду использовать пользователя fetcher для доступа к каким-нибудь ещё таблицам, буде таковые появятся в my

Скрипт для получения логинов/паролей из базы данных используя агента

Я хочу уметь делать в консоли так:

$ fl myalias
+------+-------------+-------+----------+------------+
| type | hostname    | login | password | address    |
+------+-------------+-------+----------+------------+
| ftp  | *******.com | ***** | ******** | /somewhere |
+------+-------------+-------+----------+------------+
Вызываю скрипт fl и передаю ему часть алиаса для записи в таблице logins => получаю список найденных записей прямо в консоль.

Для чего пишу в консоли следующее:

$ cat > ~/bin/fl << "EOF"
#!/bin/sh
mysql -u fetcher -e "use my; call find_login('$1');"
EOF
$ chmod 755 ~/bin/fl
Каталог ~/bin у меня в $PATH. Собственно, на этом всё, цель достигнута.