我试图在vagrant中安装mysql配方。我使用this食谱。
MySql服务在vagrant up
之后启动,但重启后我无法执行vagrant provision
或vagrant up
,因为服务器无法启动。
我已经意识到,Vagrant擦除/var/run
目录;它创建mysqld目录(用于套接字),但不创建mysql(用于pid文件)。 MySql无法找到目录,也无法创建pid文件。
我怎样才能让它发挥作用?为什么Vagrant创建mysqld,而不是mysql?
我也尝试过不同的盒子(精确32,云每日精确64)。
专栏:http://files.vagrantup.com/precise32.box Vagrantfile:
Vagrant.configure("2") do |config| config.vm.box = "precise32" config.omnibus.chef_version = :latest config.vm.box_url = "http://files.vagrantup.com/precise32.box" config.vm.network :forwarded_port, guest: 8000, host: 8080 config.vm.provider :virtualbox do |vb| vb.gui = true end config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "./chef-repo/cookbooks" chef.add_recipe "apt" chef.add_recipe "mysql::server" chef.json = { "mysql" => { "server_root_password" => "password", "server_repl_password" => "password", "server_debian_password" => "password" } } end end
答案 0 :(得分:1)
问题在于MySql cookbook:不知何故/ var / run / mysqld没有被删除,因此解决方法是:更改<mysql_cookbook>/libraries/provider_mysql_service_ubuntu.rb
pid_file = '/var/run/mysql/mysql.pid'
到
pid_file = '/var/run/mysqld/mysqld.pid'
我在github上也提出了一个问题,所以将来可以在master中修复bug
答案 1 :(得分:0)
eviltnan是对的。这是第一次运行ubuntu 12.04的脚本化解决方法。
ruby_block "ensure mysql server starts on reboot" do
block do
fe = Chef::Util::FileEdit.new("/etc/mysql/my.cnf")
fe.search_file_replace_line(/pid-file/, 'pid-file = /var/run/mysqld/mysql.pid')
Chef::Log.warn("Edited /etc/mysql/my.cnf to re-enable start on reboot.") if fe.write_file
end
end