[MariaDB] Kan niet verbinden met mysql.sock

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Demonitzu
  • Registratie: Augustus 2012
  • Niet online

Demonitzu

Incidentele gebruiker

Topicstarter
Ik heb mijn VPS geupdate met als voornaamste veranderingen een update van Debian 7.8 naar Debian 8.3 en een update van MySQL 5.5 naar MariaDB 5.5. Ook ben ik van apache met php 5.3 + suphp overgestapt naar apache met nginx reverse proxy met php 5.3 + mod_php. Alles is goed gegaan behalve het functioneren van de databases vanwege de mysql socket die niet kan verbinden.

Ik heb de website aan de praat gekregen door hem te laten verbinden met 127.0.0.1 in plaats van localhost (dus geen mysql.sock nodig)

Andere zaken zoals phpmyadmin, webmail en het MySQL gedeelte in DirectAdmin werken niet door het probleem met de socket, verder klooien met 127.0.0.1 lijkt me ook niet de ideale oplossing.

MariaDB is intact en de service draait
code:
1
2
3
4
server:~# service mysqld status
mysqld.service - MySQL database server
Loaded: loaded (/etc/systemd/system/mysqld.service; enabled)
Active: active (running) since Mon 2016-02-15 20:25:27 CET; 1h 16min ago


Er is een socket aanwezig (al staat ie niet op de gewoonlijke /tmp/mysql.sock)
code:
1
2
server:~# find / | grep mysql.sock
/home/mysql/mysql.sock


Het MySQL gedeelte van DirectAdmin (waar je o.a. databases kan aanmaken of verwijderen) geeft deze foutmelding, een permissiefout
code:
1
Error connecting to MySQL: Can't connect to local MySQL server through socket '/home/mysql/mysql.sock' (13)


Het ligt niet aan de inloggegevens, want via SSH op MySQL inloggen met de DirectAdmin logingegevens gaat prima
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
root@server:~# mysql -uda_admin -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 514
Server version: 5.5.48-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> status;


--------------
mysql  Ver 15.1 Distrib 5.5.48-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          563
Current database:
Current user:           da_admin@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         5.5.48-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /home/mysql/mysql.sock
Uptime:                 1 hour 32 min 33 sec

Threads: 1  Questions: 8764  Slow queries: 0  Opens: 350  Flush tables: 2  Open tables: 256  Queries per second avg: 1.578
--------------


/etc/my.cnf staat in ieder geval op de juiste socket afgesteld, lijkt me?
code:
1
2
3
[client]
port            = 3306
socket          = /home/mysql/mysql.sock


Hetzelfde lijkt me voor php.ini?
code:
1
2
3
4
; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysqli.default-socket
mysqli.default_socket = /home/mysql/mysql.sock


Zie ik iets over het hoofd waarom het zo mis gaat met mysql.sock? :/

TekkenZone - Dutch Tekken Community

Beste antwoord (via Demonitzu op 16-02-2016 20:28)


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Is dat de my.cnf die daadwerkelijk wordt ingeladen? Ik weet niet wat je allemaal op je vps doet, maar de configuratie ziet er klungelig uit. Gebruik je echt nog alleen MyISAM?

Je ziet dat world geen enkele rechten heeft op die map. Probeer eens "chmod 755 /home/mysql"

[ Voor 29% gewijzigd door GlowMouse op 16-02-2016 19:58 ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11:40

Matis

Rubber Rocket

Heeft de MySQL daemon wel de rechten om te kunnen lezen of schrijven in jouw home folder?
Het is volgens mij bad practice om sockets van daemons in je home folder te zetten.
Probeer hem eens in /tmp/ te laten genereren.

Daarnaast moet je volgens mij niet een poort nummer én een socket opgeven.

Wat zegt de (error) logging van MySQL?

Als laatste zie ik dat je de socket en poort informatie onder het kopje client hebt gezet. Dat hoort daar niet, maar onder [mysqld]

[ Voor 25% gewijzigd door Matis op 15-02-2016 23:53 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • +1 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Die "(13)" staat er niet voor niets, heb je daar al op gezocht?

Acties:
  • 0 Henk 'm!

  • Demonitzu
  • Registratie: Augustus 2012
  • Niet online

Demonitzu

Incidentele gebruiker

Topicstarter
(13) is een error voor filesystem permission denied. Ik vind daar vooral info over "selinux", maar lijkt me sowieso een beveiligingsrisico om daar aan te zitten.

code:
1
2
3
server:~# ls -l /
drwx--x--x   8 root root  4096 Aug 26 19:20 home
drwxrwxrwt  2 root       root       4096 Feb 16 00:00 tmp

code:
1
2
server:~# ls -l /home/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Feb 15 23:27 mysql.sock


Dat van de socket komt doordat DirectAdmin i.c.m. Debian 8 de locatie gewijzigd zou hebben, die stond na de upgrade standaard op /home/mysql/mysql.sock in plaats van de gebruikelijke /tmp. Ik dacht dat het misschien wat zou uitmaken om het te definiëren.

Ik heb alle socket instellingen bij my.cnf en php.ini op /tmp gezet, de boel herstart en dit gebeurt er:

De socket lijkt toch elders terecht te zijn gekomen. Geen socket bij /tmp te vinden.
code:
1
2
server:~# find / | grep mysql.sock
/home/mysql/mysql.sock


Dezelfde foutmeldingen blijven overal, op ssh krijg ik wel een nieuwe foutmelding
code:
1
2
3
server:~# mysql -uda_admin -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Errorcode 2 is file not found. Wat eigenlijk wel klopt als de socket niet bij /tmp gegenereerd wordt.

Ik lijk de locatie van de socket niet te kunnen veranderen.

TekkenZone - Dutch Tekken Community


Acties:
  • +1 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11:40

Matis

Rubber Rocket

Het probleem zit hem in ieder geval dat de /home niet group en world read/writable zijn. Hierdoor kan de MySQL daemon (user) niet bij de socket, ondanks dat je de specifieke socket wel alle rechten hebt gegeven.

Ik ben nog steeds van mening dat je my.cfg niet in orde is. Want wat jij citeert is de client socket en niet de server (mysqld) socket.

Het lijkt mij zaak dat je de complete my.cfg eens dumpt.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • +1 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Matis schreef op dinsdag 16 februari 2016 @ 16:11:
Het probleem zit hem in ieder geval dat de /home niet group en world read/writable zijn. Hierdoor kan de MySQL daemon (user) niet bij de socket, ondanks dat je de specifieke socket wel alle rechten hebt gegeven.
De socket bestaat gewoon, dus er is geen probleem vanuit de MySQL daemon. Ik zou kijken of /home/mysql wel executable (+x) is voor world. Daarnaast zou ik mbv logfiles kijken of selinux daadwerkelijk zaken blokkeert. Selinux configureren hoef je niet zo bang voor te zijn.

Acties:
  • 0 Henk 'm!

  • Demonitzu
  • Registratie: Augustus 2012
  • Niet online

Demonitzu

Incidentele gebruiker

Topicstarter
My.cnf (voor het laatst aangepast na de upgrade naar Debian 7)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[client]
port            = 3306
socket          = /tmp/mysql.sock

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
key_buffer_size = 128M
max_allowed_packet = 16M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 2M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 16M
interactive_timeout = 60
wait_timeout = 90
server-id       = 1

#bind-address = 127.0.0.1
#skip-networking
#thread_concurrency = 2

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 64M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


Rechten van /home/mysql (750)
code:
1
2
server:~# ls -l /home
drwxr-x--- 12 mysql      mysql      4096 Feb 16 02:28 mysql


Ik zie SElinux nergens in de logfiles voorkomen.

TekkenZone - Dutch Tekken Community


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Is dat de my.cnf die daadwerkelijk wordt ingeladen? Ik weet niet wat je allemaal op je vps doet, maar de configuratie ziet er klungelig uit. Gebruik je echt nog alleen MyISAM?

Je ziet dat world geen enkele rechten heeft op die map. Probeer eens "chmod 755 /home/mysql"

[ Voor 29% gewijzigd door GlowMouse op 16-02-2016 19:58 ]


Acties:
  • 0 Henk 'm!

  • Demonitzu
  • Registratie: Augustus 2012
  • Niet online

Demonitzu

Incidentele gebruiker

Topicstarter
Ondanks dat de socket nog steeds op /home/mysql/mysql.sock gegenereerd wordt, blijkt het chmodden van /home/mysql naar 755 de oplossing te zijn om phpMyAdmin en DirectAdmin weer geheel werkend te krijgen :)

Het is me niet geheel duidelijk of /home/mysql standaard op chmod 750 moet staan of dat er gewoon iets verkeerds is gegaan bij de upgrades, maar in ieder geval hartstikke bedankt!

TekkenZone - Dutch Tekken Community


Acties:
  • +1 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Het is natuurlijk altijd mooi als users niet in elkaars homedir kunnen kijken, vandaar standaard een 0 voor world.
Pagina: 1