Executing mysql command error


#1

Sorry the last email was sent by mistake,

I’ve been having some trouble executing a mysql command. So in my recipe I
enable the mysql service using the runit cookbook which works fine, however
in my next resource when I try to run a mysql command I get a socket error.
When I try to run the exact command directly from the command line it works
fine, why does this happen?

Here is my runit resource

runit_service “Enable service mysql-#{setup_instance_node[‘node’]}” do
sv_bin "/usr/bin/sv"
sv_dir "/var/services"
service_dir "/service"
service_name "mysql-#{setup_instance_node[‘name’]}"
sv_templates false
sv_verbose true
action :nothing
end

runit_service “Restart service mysql-#{setup_instance_node[‘node’]}” do
sv_bin "/usr/bin/sv"
sv_dir "/var/services"
service_dir "/service"
service_name "mysql-#{setup_instance_node[‘name’]}"
sv_templates false
sv_verbose true
action :nothing
end

at this point it says that the mysql service is already up and then this is
the next resource which I am running:

ruby_block “Set root password and set global users” do
block do
socket = “/var/lib/mysql/#{setup_instance_node[‘name’]}/mysql.sock”

exec = ::Chef::Resource::Execute.new(“Readonly users”, run_context)
exec.command %Q{ mysql --socket=#{socket} -u root -e “grant select, usage
on . to ‘readonly’@’%%’ identified by ‘readonly’;” }
exec.run_action(:run)
end
action :nothing
end

it is in this resource that I am getting the error: ERROR 2002 (HY000):
Can’t connect to local MySQL server through socket
’/var/lib/mysql/test/mysql.sock’ (2)

but when I run the command from the command line it works fine, is this a
problem with my actual command or with the way chef is converging the
resources.

  • Thank You
    Ameya