The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Пример работы с 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
Ключи: mysql, shell / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / SQL и базы данных / MySQL специфика / Оптимизация и администрирование MySQL



Обсуждение [ 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:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor