2011-11-23 8 views
7

Mam google przez 2 dni, a teraz została początkowo uzyskaćUbuntu 11.04 - nie można połączyć się z lokalnego serwera MySQL poprzez gniazdo '/var/run/mysqld/mysqld.sock' (13)

'/var/run/mysqld/mysqld.sock' (2) 

Naprawiłem to za pomocą:

sudo touch /var/run/mysqld/mysqld.sock 
sudo chown -R mysql /var/run/mysqld/ 

teraz pojawia się błąd:

'/var/run/mysqld/mysqld.sock' (13) 

Więc wszystko ma odpowiednie uprawnienia, a plik nie istnieje. jakieś pomysły?

[Edytuj]

Got to działa, chociaż jestem pewien, w jaki sposób. Zrobiłem aa-logprof jako root, nic się nie zmieniło, wpadłem w złość, a następnie ponownie ustawiłem, że zaczęło działać.

Odpowiedz

5

Nie można (absolutnie nie może) zastąpić rury systemu plików /var/run/mysqld/mysql.sock zwykłym plikiem. Aby utworzyć pipe(7), należy użyć klienta, aby komunikować się z serwerem mysql.

(13) prawdopodobnie również oznacza, że ​​masz pozwolenie zaprzeczył zwrot błędu, EACCES (która ma zazwyczaj wartość dziesiętną 13 - Tak, widziałem to dużo).

Jeśli uprawnienia systemu plików są skonfigurowane prawidłowo, może być o dostępy odrzuconych przez mandatory access control narzędzia takie jak AppArmor, SELinux, TOMOYO lub SMACK.

Aplikacja AppArmor jest domyślnie instalowana w systemie Ubuntu i może odmawiać dostępu do potoku. Sprawdzić /var/log/syslog, /var/log/audit/audit.log lub dmesg(1) wyjście dla wiadomości, które wyglądają mniej więcej tak:

type=AVC msg=audit(1320723925.179:45115): apparmor="DENIED" 
operation="open" parent=1 profile="/usr/sbin/ntop" 
name="/usr/share/ntop/html/PlotKit/excanvas.js" pid=1835 comm="ntop" 
requested_mask="r" denied_mask="r" fsuid=122 ouid=0 

(Ale name=/var/run/mysqld/mysql.sock zamiast.)

Jeśli masz komunikaty o błędach, takich jak ten, prowadzony aa-logprof jako root i odpowiedzieć na pytania. Więcej informacji na temat konfiguracji AppArmor można znaleźć na stronie domowej apparmor.d(5) lub w wersji various wiki pages.

+0

Dzięki wspaniałej odpowiedzi. Zawsze żałuję, że spędziłem więcej czasu z mysql niż po prostu zapytania. Otrzymuję ten błąd, gdy uruchamiam mysql start "ERROR 2002 (HY000): Nie mogę połączyć się z lokalnym serwerem MySQL poprzez gniazdo" /var/run/mysqld/mysqld.sock "(111)". Wcześniej nie miałem problemów z uruchomieniem mysql:/ –

+0

111104 11:54:40 [Uwaga] Plugin "FEDERATED" jest wyłączony. 111104 11:54:40 InnoDB: Inicjowanie puli buforów, rozmiar = 8,0M 111104 11:54:40 InnoDB: Zakończono inicjowanie puli buforów 111104 11:54:43 InnoDB: Rozpoczęte; numer kolejny rejestru 0 44233 111104 11:54:44 [Notatka] Harmonogram zdarzeń: Załadowane zdarzenia 0 111104 11:54:44 [Uwaga]/usr/sbin/mysqld: gotowy do połączeń. Wersja: '5.1.54-1ubuntu4' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu –

+0

Hej, to wygląda na poprawę, '111' to" Odmowa połączenia ". serwer po ponownym utworzeniu gniazda? Czy serwer jest skonfigurowany do korzystania z tej nazwy ścieżki? – sarnold

0

Czy sprawdziłeś, czy działa serwer mysql mysqld? Sprawdź również dziennik komunikatów systemowych, aby sprawdzić, czy narzeka na coś.

+0

To było uruchomione tak, chociaż obecnie nie jest uruchamiane. Poniżej komentarz. –

0

Czy próbowałeś usunąć plik .lock i zrestartować mysqld?

+0

Skąd ten plik .lock? –

+1

rm/var/lock/subsys/mysql –

5

W moim przypadku uruchomienie mysqld_safe utworzyło nowy plik mysqld.sock.

$ cd /etc/init.d/ 
$ mysqld_safe 

Będziesz prawdopodobnie nie dostanie szybkiego plecy, ale po ponownym uruchomieniu sesji, plik mysqld.sock będzie gdzieś.Znajdź go pod numerem:

$ sudo find/-type s | grep mysqld.sock 
+0

Dobrze, mam ten błąd (chyba), ponieważ anulowałem tabelę zmian ogromnego, nie znalazłem żadnego pliku blokady, ale poprawiono mysqld_safe to! Dzięki. – porfiriopartida

Powiązane problemy