2017-02-15 12 views
0

Я занимаюсь несколькими темами для вопросов, связанных с модулем puppetlabs-mysql за последние несколько часов, чтобы получить обходной путь по моей проблеме.Puppet MySQL отключает регистрацию пользователя root без пароля

Установка MySQL на моем узле агента с помощью этого модуля позволяет пользователю root вводить пароль без какого-либо пароля. Но я вижу, что учетные данные были установлены для пользователя root и могут также использовать эти учетные данные.

Какую разницу я должен сделать в своем манифесте, чтобы отключить логин MySQL без пароля?

Manifest применяется,

class { '::mysql::server': 
    root_password => 'rootpassword', 
    override_options => { 'mysqld' => { 'max_connections' => '1024' } } 
} 
+1

Возможно, он установил пароль для '' root '@ localhost'', а не '' root' @ '%' ' – ptierno

+0

Спасибо @ptierno. Любая идея о манифестной части для того же? –

+0

Просто используйте mysql_user ресурс: (извините за разбитое форматирование) 'mysql_user { 'корень @%': обеспечение => присутствует, password_hash => mysql_password ('rootpassword'), }' – Ben

ответ

1

Что вы имеете в виду, как беспарольного логин, скорее всего, .my.cnf сохранить пароль в optionfile.

Итак, установив $ mysql :: server :: create_root_my_cnf в false, вы отключите это.

class { '::mysql::server': 
    root_password => 'rootpassword', 
    create_root_my_cnf => false, 
    override_options => { 'mysqld' => { 'max_connections' => '1024' } } 
} 
+0

Да, то есть верный. Этот манифест создаст .my.cnf под моим пользователем root (shell). Таким образом, это означает, что он запрашивает пароль пользователя mysql от других пользователей оболочки. Я пробовал ваш пример. Он работает, спасибо. Но дело в том, что это приведет к ошибке на других пользователях, созданных db. Уверены, что на нем больше потоков, 'Ошибка: Не удалось применить каталог: Выполнение '/ usr/bin/mysql -NBe SELECT CONCAT (Пользователь,' @ ', Host) AS Пользователь FROM mysql.user' возвращен 1: ОШИБКА 1045 (28000): Доступ запрещен для пользователя «root» @ «localhost» (с использованием пароля: НЕТ) ' –

+0

Мой манифест, ' class {':: mysql :: server': root_password => 'rootpassword', create_root_my_cnf => ложно, override_options => { 'MYSQLD' => { 'max_connections' => '1024'}}} MySQL :: дб { 'MYDB': пользователь => 'пользователь', пароль => 'pass', host => 'localhost', grant => ['SELECT ',' UPDATE '], } ' –

+0

Кроме того, я также попробовал ваш первый пример манифеста: ' mysql_user {' root @% ': обеспечить => present, password_hash => mysql_password (' rootpassword '),} '. Он работает в некотором смысле, не создает файл, который, как мне кажется, создает пользователь root mysql без пароля. Значит, я не могу войти только с командой 'mysql', но принимает пустой пароль с' mysql -u root -p'. При этом он не выдает ошибки при создании любых дополнительных пользовательских комбинаций db. –

1

У меня была такая же проблема, и для меня, создавая простой корень ~/.my.cnf файл зафиксировал проблему. Добавьте следующие строки в файле корневой .my.cnf:

[client] 
password="mysql root user password here" 

Это позволяет кукольный подключиться снова MySQL. Затем Puppet перезапишет этот файл своей собственной сгенерированной конфигурацией.

 Смежные вопросы

  • Нет связанных вопросов^_^