#mysql #ruby #bash #chef-infra
#mysql #ruby #bash #шеф-повар-инфра
Вопрос:
Я пытаюсь создать базу данных с помощью массива.Я определяю массив базы данных. и затем создаю базу данных из элементов массивов.
Это мой рецепт шеф-повара для создания базы данных в mysql.
array- database=["testy1","testy2"]
script 'set Create database ' do
interpreter 'bash'
user 'root'
cwd '/tmp'
code <<-EOH
mysql -uroot -p'#{pw}' -Be "CREATE DATABASE #{database}"
EOH
not_if "mysql -u root -p'#{pw}' -Be 'SHOW DATABASES' | grep #{database};"
end
STDERR: mysql: [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным.
ОШИБКА 1064 (42000) в строке 1: у вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘[testy1, testy2]’ в строке 1
—- Конечный вывод «bash» «/tmp/chef-script20190402-6843-gm0k0u» —-
Запустил «bash» «/tmp/chef-script20190402-6843-gm0k0u», вернул 1
Ожидаемым результатом будет создание баз данных testy1 и test2.
Комментарии:
1. Вероятно, вам нужно выполнить итерацию по этому списку базы данных вместо того, чтобы использовать его как есть.
2. Спасибо, но я не могу выполнить итерацию в виде отдельных значений.
3. Подсказка:
database.each do |db|
или что-то в этом роде.
Ответ №1:
хотя database cookbook не рекомендуется, вы можете попробовать и посмотреть, решит ли это вашу проблему. в документации chef есть руководство по созданию веб-приложения cookbook, использующего database cookbook.
что касается вашей проблемы, вам следует создать конфигурацию клиента mysql ( my.cnf
), которая позволит вам запускать mysql
команду без указания учетных данных для входа (имя пользователя и пароль).