Как установить пароль root с помощью солевых состояний

Я хочу установить надежный пароль для пользователя root mysql. Но есть проблема с яйцом. У меня пустой сервер. Я солю. Пароль root пуст (по умолчанию после установки).

Если я использую

root: 
  mysql_user.present:
  - name: root
  - password: $ecur3h4x0r
  - host: %

Тогда я не смогу вызывать какие-либо другие состояния mysql, потому что им понадобится пароль. Но в следующий раз, когда я сделаю highstate, этот вызов не будет работать, потому что состояние пытается подключиться с пустым паролем.


person Tomáš Fejfar    schedule 12.06.2013    source источник


Ответы (3)


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

person Utah_Dave    schedule 12.07.2013
comment
Удачи в этом? У нас 0.17.4, и я не вижу никаких знаков в документации или беглого поиска в Google. - person thaddeusmt; 24.01.2014
comment
Я сам еще не тестировал это решение, но похоже, что в этом pull req добавлены следующие функции: github .com / saltstack / salt / pull / 9722 Также см. connection_user и connection_pass здесь: docs.saltstack.com/ref/states/all/ - person Utah_Dave; 04.03.2014

На всякий случай кто-то наткнется на этот вопрос, когда начнет управлять mysql с помощью saltstack.

Вот как это работает в текущей версии соли (salt 2015.5.0 (Lithium)). Обратите внимание, что mysql_user.present-state достаточно умен, чтобы сначала попробовать его без пароля. В последующих запусках состояние будет использовать пароль root для подключения и понять, что пароль для root находится в правильном состоянии.

root:
  mysql_user.present:
    - host: localhost
    - password: s3cure_root_password

another_user:
  mysql_user.present:
    - host: localhost
    - password: anoth3r_user_password
    - connection_user: root
    - connection_pass: s3cure_root_password
person Christian Seitzer    schedule 24.06.2015
comment
Спасибо. Прошло много времени, и у нас есть и mysql-formula, и state.mysql. Было бы здорово, если бы кто-то с адекватными знаниями мог бы обновить это, чтобы предпочесть (или почему), чтобы всем не приходилось проходить оба. - person jma; 09.02.2018

Я хотел бы отметить 2 вещи, которые сработали у меня в версии master / minion '2019.2.0' под Ubuntu 18.04:

  • Можно будет установить пароль пользователя root в первый раз с помощью:
   mysql_user.present:
     - name: root
     - host: localhost
     - password: pillar['mysql']['mysqlrootpassword']
     - connection_charset: utf8
     - saltenv:
       - LC_ALL: "en_US.utf8"

После этого команда всегда будет успешной с User root@localhost is already present with the desired password, независимо от значения пароля root.

  • Пользователь MySql root может войти в систему, только если вы используете sudo или как пользователь root
person Fabian    schedule 09.05.2019