mysqld_safe A mysqld process already exists



  • Guten Tag,

    ich habe auf meinem Laptop mit Ubuntu 16.04.5 LTS MariaDB mittels "sudo apt-get install mariadb-server" heruntergeladen und über "mysql_install_db --datadir=/home/meinBenutzerName/db" das ganze installiert.

    Wenn ich jetzt einen Server anlegen möchte mittels:

    "sudo mysqld_safe --datadir=/home/meinBenutzerName/db --socket=/home/meinBenutzerName/db/mysql.sock --port=3306 &"

    erhalte ich die Meldung:

    190411 20:36:47 mysqld_safe Logging to syslog.
    190411 20:36:47 mysqld_safe A mysqld process already exists
    

    Auch nach "sudo killall mysqld mysqld_safe" und "sudo killall -9 mysqld _safe" existiert weiterhin ein Prozess

    Mit "ps" wird mir kein solcher Prozess angezeigt, "ps aux | grep mysqld" zeigt mir folgendes an:

    root 4872 0.0 0.0 28252 3640 ? S 19:42 0:00 /bin/bash /usr/bin/mysqld_safe
    mysql 10165 0.1 0.8 622692 62640 ? Sl 20:18 0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-log-error --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
    root 10166 0.0 0.0 33156 1356 ? S 20:18 0:00 logger -t mysqld -p daemon error
    root 11088 0.0 0.0 61944 3884 pts/4 T 20:24 0:00 sudo mysqld_safe --datadir=/home/meinBenutzerName/db --socket=/home/meinBenutzerName/db/mysql.sock --port=3306
    meinBenutzerName 12287 0.0 0.0 21312 936 pts/4 S+ 20:39 0:00 grep --color=auto mysqld
    

    Wie bekomme ich den Prozess beendet?
    "sudo mysqladmin --socket=/home/meinBenutzerName/db/mysql.sock -u root status" und
    "sudo mysqladmin --socket=/home/meinBenutzerName/db/mysql.sock -u root shutdown" geben mir:

    mysqladmin: connect to server at 'localhost' failed
    error: 'Can't connect to local MySQL server through socket '/home/meinBenutzerName/db/mysql.sock' (2 "No such file or directory")'
    Check that mysqld is running and that the socket: '/home/meinBenutzerName/db/mysql.sock' exists!
    

    Ich bin wirklich überfragt, wie bekomme ich das zum Laufen? Bin für jeden Tipp dankbar!
    Viele Grüße
    Tristan



  • Dieser Beitrag wurde gelöscht!


  • Noch mal der Lesbarkeit halber überarbeitet



  • Der Lesbarkeit halber ... schreib' doch bitte nicht fett sondern setzte inline-Code und -Kommandos in backticks: ` ... `



  • Hast du nach dem Killen des Prozesses auch einige Sekunden gewartet, wie in [Resolved] error mysqld_safe - a mysqld process already exists beschrieben?

    Oder wird immer wieder ein neuer Prozess (mit anderer ProcessId) angelegt?


  • Administrator

    Wenn du über die Paketquellen den MariaDB Server installierst, dann wird automatisch ein Daemon mitinstalliert, welcher beim Systemstart startet. Du musst daher den Server nicht selber starten. Das sollte auch alles schon korrekt konfiguriert sein, heisst du musst kein eigenes Datenverzeichnis oder Socket bestimmen.

    Gibt es einen Grund, wieso du das selber machen willst, bzw. die Konfiguration ändern möchtest?



  • Danke für die Antworten.

    @Th69 ja aber selbstverständlich.

    @Dravere
    Also könnte ich mir das alles quasi sparen und einfach loslegen?
    Und wo liegt der Server? Zumal mir ps ja keinen Prozess angezeigt hat. (Mit Systemstart ist das Betriebssystem gemeint oder?)
    Wie ändern sich die Befehle, um den Status abzufragen, das PW zu ändern usw., wenn ich den socket nicht selbst gewählt habe?

    Der Gedanke dahinter war, dass alles auch auf den Übungsrechnern in der Uni laufen muss, da wollte ich es identisch einrichten.


  • Administrator

    @TristanS sagte in mysqld_safe A mysqld process already exists:

    Also könnte ich mir das alles quasi sparen und einfach loslegen?

    Ja.

    Und wo liegt der Server? Zumal mir ps ja keinen Prozess angezeigt hat. (Mit Systemstart ist das Betriebssystem gemeint oder?)

    Die Daten werden wahrscheinlich unter /var/lib/mysql abgelegt. Du kannst das aus der Konfiguration unter /etc/mysql/my.conf entnehmen.

    https://mariadb.com/kb/en/library/default-data-directory-for-mariadb/

    Meine Vermutung ist, wieso der Prozess nicht erschien, dass du ihn tatsächlich mit killall -9 abgeschossen hast. Aber womöglich hat der Prozess irgendwo eine PID-Datei hingelegt und solange die existierte, hat er einen Neustart verweigert. killall ist halt nicht so der schöne Weg, um ein Programm sauber zu beenden. Bereits ohne den Parameter -9 wäre der DB-Server womöglich sauber runtergefahren.

    Wie ändern sich die Befehle, um den Status abzufragen, das PW zu ändern usw., wenn ich den socket nicht selbst gewählt habe?

    Üblicherweise musst du den Socket gar nicht angeben, da der Standardwert dann einfach stimmt.

    Der Gedanke dahinter war, dass alles auch auf den Übungsrechnern in der Uni laufen muss, da wollte ich es identisch einrichten.

    Es ist unter Linux eigentlich üblich, dass der DB Server vom Package sinnvollerweise vorkonfiguriert ist. Wenn du auf absolut sicher gehen möchtest, dass du gleiche Laufzeitumgebungen hast, dann würde ich eher zu Docker greifen und dem MariaDB Image: https://hub.docker.com/_/mariadb

    Aber das ist vielleicht zu sehr mit Kanonen auf Spatzen geschossen?



  • @TristanS sagte in mysqld_safe A mysqld process already exists:

    Und wo liegt der Server? Zumal mir ps ja keinen Prozess angezeigt hat. (Mit Systemstart ist das Betriebssystem gemeint oder?)

    ps ohne Parameter zeigt nur die Prozesse deines Benutzers an. Die Datenbank die vom System gestartet wird läuft als User "mysql". Wenn du etwas mit sudo startest, läuft es als root. Daher zeigt ps alleine nichts an. In deiner ps aux Ausgabe sind aber beide Prozesse zu sehen.

    Wie ändern sich die Befehle, um den Status abzufragen, das PW zu ändern usw., wenn ich den socket nicht selbst gewählt habe?

    Der Gedanke dahinter war, dass alles auch auf den Übungsrechnern in der Uni laufen muss, da wollte ich es identisch einrichten.

    In der Regel solltest du gar keinen Socket angeben müssen, weil er als Standard konfiguriert ist. Vorkonfiguriert ist auch, dass du mit dem Benutzer root über den Socket ohne Passwort auf die Datenbank kommst.



  • Danke für die Hilfe, konnte jedes Problem lösen, waren die richtigen Denkanstöße dabei, die entweder Denkfehler von mir aufgezeigt haben oder ich die Richtigen Stichworte zum googeln bekommen habe. 🙂


Anmelden zum Antworten