sous-chefs / mysql

Development repository for the mysql cookbook
https://supermarket.chef.io/cookbooks/mysql
Apache License 2.0
338 stars 690 forks source link

Cannot connect through socket #671

Open whyte624 opened 3 years ago

whyte624 commented 3 years ago

:ghost: Brief Description

Error:

FATAL: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock'

:pancakes: Cookbook version

10.1.3

:woman_cook: Chef-Infra Version

17.2.29

:tophat: Platform details

Ubuntu 18.04 Vagrant

Steps To Reproduce

Steps to reproduce the behavior:

It is not full example, but I hope it will be enough.

.kitchen.yml

driver:
    name: vagrant

provisioner:
    name: chef_zero
    log_level: info
    data_bags_path: ./test/data_bags
    client_rb:
        chef_license: accept

platforms:
    - name: ubuntu-18.04

suites:
    - name: default
mysql_service 'default' do
    instance 'default'
    charset 'utf8'
    version '5.7'
    initial_root_password 'root_password'
    data_dir '/var/lib/mysql'
    action [:create, :start]
end

mysql_user 'me' do
    ctrl_user 'root'
    ctrl_password 'root_password'
    password 'my_password'
    host '%'
    privileges [:all]
    action [:create, :grant]
end

:police_car: Expected behavior

Expecting mysql and user me

:heavy_plus_sign: Additional context

I understand that root uses auth_socket plugin. I assume if I change plugin to mysql_native_password it would work. But I do know want to change plugin. Also it requires other recipes to be used. I would like to solve mysql server installation with this cookbook only.

If I could specify shell user who executes mysql_user resource, then I would set root (from ubuntu). However, there is no such option.

For now I solved it with execute shell script doing the same thing, but as root.

tr3pan commented 2 months ago

I don't know if this is the same issue I have, but for me the issue was the socket was missing. It takes some time mysql to start and create it. If chef waits a bit chef_sleep '10' worked for me for most cases, the user creation will work.