The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Пример работы с MySQL в bash скриптах
Пример1:

   password='Your_MySQL_Password'

   MYSQL_RESULT=`mysql -e "SELECT tables_col FROM table_name" -- 
   password="$password" database_name|grep -v tables_col|xargs|sed "s/ /\n/g"`

   for i in $MYSQL_RESULT; do
      echo $i
   done;

Пример2:

   mysql -sse "SELECT col FROM table" -p"$password" database | while read i
   do
      echo $i
   done

Комментарий 1: Пароль лучше передавать через переменную окружения MYSQL_PWD,
чтобы он не светился в выводе ps.

Комментарий 2 (от myhand):
Другой вариант передача пароля через локальный файл конфигурации .my.cnf,
размещенный в корне домашней директории пользователя:

Пример .my.cnf:

[client]
user = имя_пользователя
password = пароль
host = хост_БД
[mysql]
database = имя_бд
 
25.10.2006 , Автор: Luc!f3r
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ RSS ]
 
  • 1.1, sargio, 22:42, 25/10/2006 [ответить] [смотреть все]
  • +/
    Однако, вот что пишет сам MYSQL по поводу ипользования MYSQL_PWD - extremely insecure.

    Store your password in the MYSQL_PWD  environment variable. This method of specifying your MySQL password must be considered extremely insecure and should not be used. Some versions of ps include an option to display the environment of running processes. If you set MYSQL_PWD, your password is exposed to any other user who runs ps.

    http://dev.mysql.com/doc/refman/5.0/en/password-security.html

     
  • 1.2, cobold, 09:33, 26/10/2006 [ответить] [смотреть все]
  • +/
    ps умеет выводить и переменные окружения тоже.
     
     
  • 2.3, Антон, 10:06, 26/10/2006 [^] [ответить] [смотреть все]
  • +/
    >ps умеет выводить и переменные окружения тоже.

    ps выводит переменные окружения только для процессов того же пользователя. Если вы можете запустить ps под тем же uid что и скрипт или под root, то можно обойтись и без просмотра переменных окружения.


    Через /proc тоже чужие не смогут посмотреть, права на /proc/<pid>/environ - "-r--------"

     
  • 1.4, Andrey Y. Ostanovsky, 10:25, 27/10/2006 [ответить] [смотреть все]
  • +/
    Все эти пляски с grep|xargs|sed можно с успехом заменить штатными средствами mysql:

    mysql -Bse "show databases like '%test%'" - выводит только данные и построчно.

     
     
  • 2.11, Mark, 15:58, 03/03/2011 [^] [ответить] [смотреть все]
  • +/
    Однако спасибо большое =)
     
  • 1.5, Vovans, 18:06, 02/11/2006 [ответить] [смотреть все]  
  • +/
    Спасибо! ;)

    Очень помогло и упростило сбор некоторых данных ;)

    Примного благодярен!

     
  • 1.6, _Nick_, 13:53, 08/11/2006 [ответить] [смотреть все]  
  • +/
    ближе всего к истине по борьбе с ps'ом был Антон

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

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

     
  • 1.7, Logka, 10:37, 15/11/2006 [ответить] [смотреть все]  
  • +/
    И это есть самый правильный вариант - не показывать чужие процессы.
     
  • 1.8, Jet, 19:05, 09/11/2007 [ответить] [смотреть все]  
  • +/
    Спасибо за комментарий про .my.cnf
    PS: В который раз убедился - маны внимательно надо читать.
     
  • 1.9, Anton, 14:13, 19/11/2008 [ответить] [смотреть все]  
  • +/
    При выводе из переменной используйте printf вместо echo.

       MYSQL_RESULT='mysql -h127.0.0.1 -u USER -pMY_PASS  MY_BASE -e "SELECT tables_col FROM table_name"'

       printf "$MYSQL_RESULT"

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList