Ad Widget

Collapse

Под каким пользователем пассивный агент лезет в MySQL?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #1

    Под каким пользователем пассивный агент лезет в MySQL?

    Приветствую.
    Столкнулся с такой непонятной ситуацией.
    На сервере с Centos 6 перезапускаю zabbix агента
    Code:
    sudo service zabbix-agent restart
    Shutting down Zabbix agent:                                [  OK  ]
    Starting Zabbix agent:                                     [  OK  ]
    Все Ок, агент запущен от пользователя zabbix
    Code:
     ps axu | grep -i zabb
    zabbix    17957  0.0  0.0  75432  1244 ?        S    12:45   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
    zabbix    17959  0.0  0.0  75432  1404 ?        S    12:45   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
    zabbix    17960  0.0  0.0  75432  2276 ?        S    12:45   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
    Делаю простенький пассивный элемент данных:

    system.run[''whoami;id; mysql'']

    И в выхлопе получаю:
    Code:
    zabbix
    uid=367962(zabbix) gid=496(employee) groups=496(employee)
    ERROR 1045 (28000): Access denied for user 'Alex_UUU'@'localhost' (using password: NO)
    Т.е. агент работает под пользователем zabbix, ИД пользователя правильные. А вот в MySQL он пытается зайти под пользователем, который перезагружал агента последний раз.
    По идее он должен был в мускуль заходить под юзером zabbix И, например, выдать ошибку

    ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: NO)

    Как такое возможно и что сделать?
  • kidoro
    Junior Member
    • Oct 2018
    • 14

    #2
    a ps -aux что показывает, под каким пользователем у вас заббикс агент работает там 4 подпроцесса вроде как. Пользователя под агента создавали? zabbix_agentd.conf изменяли?

    Comment

    • DSV12
      Senior Member
      Zabbix Certified Specialist
      • Nov 2018
      • 156

      #3
      Originally posted by Alex_UUU
      Приветствую.

      Т.е. агент работает под пользователем zabbix, ИД пользователя правильные. А вот в MySQL он пытается зайти под пользователем, который перезагружал агента последний раз.
      По идее он должен был в мускуль заходить под юзером zabbix И, например, выдать ошибку

      ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: NO)

      Как такое возможно и что сделать?
      Чтобы не гадать, используйте конфиг .my.cnf (точка в начале обязательна) в home zabbix-а (в нём пропишите пользователя/пароль mysql) - тогда будет понятно, под каким пользователем zabbix-агент в mysql заходит.

      Comment

      • Alex_UUU
        Senior Member
        • Dec 2018
        • 541

        #4
        Originally posted by kidoro
        a ps -aux что показывает, под каким пользователем у вас заббикс агент работает там 4 подпроцесса вроде как. Пользователя под агента создавали? zabbix_agentd.conf изменяли?
        Привет, все процессы работают под zabbix, я просто первые в посте привел.


        Originally posted by DSV12
        Чтобы не гадать, используйте конфиг .my.cnf (точка в начале обязательна) в home zabbix-а (в нём пропишите пользователя/пароль mysql) - тогда будет понятно, под каким пользователем zabbix-агент в mysql заходит.
        Именно с этого все и началось. конфиг для мускуля прописан и если в вызове указать
        system.run[''whoami;id; НОМЕ=/usr/lib/zabbix mysql '']
        то все работает и коннект идет от пльзователя, указанного в конфиге.Но я не хочу каждый раз указывать папку хомяка.

        Comment

        • mak_v_
          Junior Member
          • May 2018
          • 15

          #5
          Создайте .my.cnf в хомяке заббикс-пользователя, он подхватится в переменную.

          Comment

          • Alex_UUU
            Senior Member
            • Dec 2018
            • 541

            #6
            Originally posted by mak_v_
            Создайте .my.cnf в хомяке заббикс-пользователя, он подхватится в переменную.
            Фигня какая-то. Нифига не подхватывает.

            Вот это я посылаю агенту
            Code:
            system.run[''whoami;id; getent passwd `whoami`;mysql "select Test';"'']
            Вот это он мне выдает:
            Code:
            zabbix
            uid=367962(zabbix) gid=496(employee) groups=496(employee)
            zabbix:x:367962:496:zabbix MailBox:/var/lib/zabbix:/bin/bash
            ERROR 1045 (28000): Access denied for user 'Alex_UUU'@'localhost' (using password: NO)
            Вот, что в файле конфига мускуля
            Code:
            cat /var/lib/zabbix/.my.cnf
            [client]
            user=zabbix
            password=ТутТипаПароль
            Типа агент под заббиксом, все Ок, а в мускуль лезет ХЗ как.

            ЗЫ. Кажется понял, в чем причина. Поставил в запрос
            Code:
            echo $HOME
            И он стал выдавать... пустоту. Т.е. переменная хомяка не передается процессу.
            Блин, как передать на уровне конфига?





            Comment

            • mak_v_
              Junior Member
              • May 2018
              • 15

              #7
              getent passwd zabbix, подозреваю что там /nonexistent
              А вам надо научить заббикс "брать реквизиты из файла", т.е. передавть переменные окружения. Дальше думаю ясно?
              Last edited by mak_v_; 14-01-2019, 14:50.

              Comment

              • Alex_UUU
                Senior Member
                • Dec 2018
                • 541

                #8
                Originally posted by mak_v_
                getent passwd zabbix
                Выше есть:
                Это я на сервере выполнил, тоже самое.
                Code:
                zabbix:x:367962:496:zabbix MailBox:/var/lib/zabbix:/bin/bash

                Comment

                • mak_v_
                  Junior Member
                  • May 2018
                  • 15

                  #9
                  Можно сделать костыль
                  system.run[''whoami;id; getent passwd `whoami`;alias 'mysql -p'='mysql --defaults-extra-file=.my.cnf';"'']

                  Comment

                  • Alex_UUU
                    Senior Member
                    • Dec 2018
                    • 541

                    #10
                    Originally posted by mak_v_
                    Можно сделать костыль
                    system.run[''whoami;id; getent passwd `whoami`;alias 'mysql -p'='mysql --defaults-extra-file=.my.cnf';"'']
                    Костыль делается еще проще, указанием в run хомяка. Но это неправильно по нескольким причинам:
                    1. И так длина запроса ограничена
                    2. ХЗ где завтра это вылезет.

                    Comment

                    • Alex_UUU
                      Senior Member
                      • Dec 2018
                      • 541

                      #11
                      В общем сделал так (кстати, считаю это багом заббикса и исправить бы его системно)
                      В файл
                      /etc/init.d/zabbix-agent
                      дописать
                      export HOME=/var/lib/zabbix

                      В результате получаем:

                      Code:
                      zabbix
                      uid=367962(zabbix) gid=496(employee) groups=496(employee)
                      zabbix:x:367962:496:zabbix MailBox:/var/lib/zabbix:/bin/bash
                      /var/lib/zabbix
                      ERROR 1049 (42000): Unknown database 'select Test';'
                      Т.е. используется правильный хомяк со всеми вытекающими.

                      Comment

                      • mak_v_
                        Junior Member
                        • May 2018
                        • 15

                        #12
                        Ниче не понинимаю.... а как вы хотите передать параметры коммандной строки (логин и пароль) не передавая их же???
                        Из хомяка подхватывается .my.cnf по .profile и экспортируется в переменные окружения...
                        Никак не могу понять что вы хотите....

                        Comment

                        • Alex_UUU
                          Senior Member
                          • Dec 2018
                          • 541

                          #13
                          ПРоцесс забикса не видит хомяка!!! Вернее он после перезагрузки имеет пустую переменную НОМЕ.

                          Comment

                          • mak_v_
                            Junior Member
                            • May 2018
                            • 15

                            #14
                            Больше знаков восклицания
                            жесть конечно...у вас заббикс проверка стартует не из init.d а единократно.
                            сделайте наконец
                            su - zabbix
                            И посмотрите переменные окружения.

                            Comment

                            • Alex_UUU
                              Senior Member
                              • Dec 2018
                              • 541

                              #15
                              Code:
                              su - zabbix
                              -bash-4.1$ echo $HOME
                              /var/lib/zabbix
                              Перезапустил заббикс агента под юзером заббикса. Значение переменной HOME агенту не передалось.
                              Т.е. Заббикс агент не знает о своей домашней директории.. Пользователь zabbix - знает, а агент - нет.
                              Но не исключаю каких-то глюков и в системе.

                              Comment

                              Working...