Wie man sich lokalen Zugang zur SageDB 5.0 alias MySQL verschafft

Manchmal ist es eben nötig Daten „direkt“ und nicht über das dafür vorgesehene Programm (in meinem Fall GS-Auftrag 2010 von Sage) zu bearbeiten.
Sei es die Umbenennung ganzer Produktgruppen, Preisanpassungen oder was auch immer. Umfangreiche Änderungen über die Grafische Oberfläche durchzuführen sind sehr Zeitaufwendig. Wenn man sich allerdings etwas mit Datenbanken auskennt kann man das ganze ungemein beschleunigen.

Die von GS-Auftrag verwendete Sage DB 5.0 ist aktuell ein MySQL 5.0.42 Enterprise Server. Der direkte Zugriff auf die Datenbank ist allerdings von Sage nicht gewollt. Es gibt zwar einen Account mit dem Benutzernamen: nurlesen und dem Kennwort:nurlesen%1 aber wie der Name schon sagt darf man mit dem Account nichts ändern.

Wie man das behebt folgt nun (ich beziehe mich hier auf ein System mit Windows XP Professional SP3 auf dem aktuellen Update-Stand, und der aktuellen Version von GS-Auftrag 4.0.98.1 vom 05.08.2010):

  • als erstes Startet man die Computerverwaltung („Start“ -> „Ausführen“ -> „compmgmt.msc“ -> „OK“) und beendet über „Dienste und Anwendungen“ -> „Dienste“ den Dienst „SageDB5.0“
  • auf der Festplatte (C:\) erstellt man eine leere Textdatei (mysql-zugang.txt) an und füllen sie mit dem Inhalt:
    CREATE USER 'darfalles'@'%' IDENTIFIED BY 'ganzgeheimespasswort';
    GRANT ALL ON *.* TO 'darfalles'@'%';

    um einen neuen Benutzer (darfalles) mit dem Passwortganzgeheimespasswort anzulegen (die Daten bitte anpassen)
  • nun brauchen wir die cmd („Start“ -> „Ausführen“ -> „cmd“ -> „OK“)
  • wir starten die SageDB wie folgt: "C:\Programme\Sage\SageDB 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Programme\Sage\SageDB 5.0\server.ini" --init-file="C:\mysql-zugang.txt"
  • mit dem Windows Task-Manager (Ctrl/Strg, Alt & Entf) unter „Prozesse“ den „mysqld-nt.exe“-Prozess beenden
  • jetzt den SageDB Service wieder über die Computerverwaltung starten und die Datei mysql-zugang.txt wieder löschen
  • nun mit dem MySQL-Client seiner Wahl, ich empfehle an dieser Stelle einfach mal HeidiSQL mit der Sage DB verbinden (IP: 127.0.0.1 / Port: 4136 / User: darfalles / Password: ganzgeheimespasswort) und die Datenbank bearbeiten.

Wie man sieht, keine große Hexerei dafür aber sehr Hilfreich in so manchen Situationen.

Weiter

Zurück

21 Kommentare

  1. Frank Seidinger2. Mai 2012

    Hi,

    nach dem letzten Programm-Update kann ich mit dieser Methode nicht mehr alle Rechte bekommen. Ich verwende einen solchen user (‚dump’@’localhost‘) seit etwa zwei Jahren, um mysqldump auszuführen.

    Die Serverversion ist immer noch bei „5.0.42-enterprise-nt“

    Im Verlauf von mysqldump kommt es dann zu einer Fehlermeldung:

    mysqldump: Couldn’t execute ’show create table `sg_view_konten`‘: SHOW VIEW command denied to user ‚dump’@’localhost‘ for table ’sg_view_konten‘ (1142)

    Mein init-script sieht so aus:

    DROP USER ‚dump’@’localhost‘;
    CREATE USER ‚dump’@’localhost‘ IDENTIFIED BY ‚XXX‘;
    GRANT ALL ON *.* TO ‚dump’@’localhost‘;
    FLUSH PRIVILEGES;

    • frag-mich-doch.net2. Mai 2012 — Autor der Seiten

      Muss ich mir mal ansehen, wobei wir nicht auf die aktuelle Version mangels brauchbarer neuer Features umgestiegen sind.

  2. Jens2. November 2012

    Hallo, mit der Beschreibung konnte ich zwar eine Verbindung zum DB-Server aufbauen, sehe aber nur die DB-Schemen:
    – information_schema
    – mysql
    – temp
    Ich habe GS-Auftrag als Testversion lokal installiert. Any hints?
    Danke!

    • Jens2. November 2012

      Sorry, war bissl schnell. Der mitgelieferte Testmandant speichert seine Daten sonstwo. Nachdem ich einen neuen Mandangten angelegt habe kann ich prima auf das Schema „mand3“ zugreifen .

  3. Johannes Thoma23. November 2012

    Wie verbinde ich mich den überhaupt mit der Datenbank.

    Bei mir kommt immer der Fehler, dass keine Verbindung hergestellt werden kann.

  4. Johannes Thoma23. November 2012

    Hallo zusammen,

    bei mir klappt es nicht ganz mit dem CMD-Befehl.
    Er wirft mir folgende Meldung aus:

    Could not open required defaults file: C:\Programme\Sage\SageDB
    Fatal error in defaults handling. Program aborted

    An was kann das liegen? Nutze Windows Small Business Server 2011 Essentials

    • frag-mich-doch.net23. November 2012 — Autor der Seiten

      Zufällig die “ um die Pfadangabe zur server.ini vergessen? Muss wegen dem Leerzeichen bei \SageDB 5.0\ mit angegeben werden, sonst ist da für „ihn“ Schluss mit dem Pfad. Eventuell den Ordner mal über den Windows Explorer aufrufen und aus der Adresszeile den Pfad kopieren, vielleicht liegt die server.ini bei dir ja wo anders?

      • Johannes Thoma24. November 2012

        Also jetzt habe ich zumindest zugang zur Tabelle, nur leider noch keine Schreibrechte.
        Aber ich werde es weiter versuchen. Danke erstmal für deine Hilfe.

        Schönes Wochenende

        Grüße

        Johannes

  5. Johannes THoma24. November 2012

    Guten Abend nochmal,

    also jetzt muss ich mich nochmal melden. Ich kann mir ganz normalen Zugang zur Sage-Datenbank verschaffen, indem ich die bekannten Zugangsdaten von Sage nutze (nurlesen und das entsprechende Passwort dazu).

    Verwende ich das Skrip und führe es aus, so taucht es zum einen nur ganz kurz im Task Manager unter Prozesse auf und wird gleich wieder beendet und zum anderen wenn ich den Dienst erneut starte, kann ich mich nicht mit den in den Skript hinterlegten Zugangsdaten auf die Datenbank einloggen. Es kommt immer der Fehler Acces Denied.

    Müsste echt dringed auf die Datenbank zugreifen, bevor ich den Mandanten importiere.

    Ich nutze Windows 7 32 bit, als Server dient ein SBS 2011 Essential.

    Ich weiß nicht mehr weiter.

    Danke

    • Ralf Schneider23. Februar 2013

      Hallo Ihr Lieben,

      ich bin Ende letzten Jahres der oben genannten Empfehlung gefolgt und ich erreichte das Ziel. Vielen Dank an dieser Stelle!
      Nun sind ein par Tage vergangen, und ich muss diese Aktion wiederholen. Leider diesmal erfolglos!
      Auf dem selben Rechner ist es mir nicht möglich die Aktion für einen neuen Benutzer mit neuem PW ein weiteres mal auszuführen.

      Serverversion: “5.0.42-enterprise-nt”
      GS-Adressen: 4.1.27.1 vom 07.06.2011
      Client: Windows Vista respektive Windows 7

      Ich gehe wiefolgt vor:
      Ich starte via cmd, ausgehend von C:\, folgendes unter Verwendung der angezeigten „Gänsefüsschen“:
      „C:\Program Files\Sage\SageDB 5.0\bin\mysqld-nt.exe“ –defaults-file=“C:\Program Files\Sage\SageDB 5.0\server.ini“ –init-file=“C:\temp\mysql-zugriff.txt“

      In der Datei mysql-zugriff.txt steht folgendes:
      DROP USER ‚r’@’localhost‘;
      CREATE USER ‚r’@’localhost‘ IDENTIFIED BY ‚m‘;
      GRANT ALL ON *.* TO ‚r’@’localhost‘;
      FLUSH PRIVILEGES;

      Dann beende ich den Dienst und starte den originalen Dienst.
      Dann verbinde ich mich via MySQL-Workbench mit der Sage DB:
      IP: 127.0.0.1 / Port: 4136 / User/Password: r / r

      Die folgende Meldung lautet:
      Access deniend for User ‚r’@’localhost‘ (using password: YES)

      Hat bitte jemand einen Hinweis darauf, was falsch ist?

      Vielen Dank.
      Ralf

      • frag-mich-doch.net23. Februar 2013 — Autor der Seiten

        müsste es nicht:
        – User/Password: r / m
        sein?

        • Ralf Schneider24. Februar 2013

          Ups; vielen Danke für Deine Aufmersamkeit. Das war nur in der Eile gestern ein Schreibfehler meinerseits, aber nicht das eigetliche Problem.

          • frag-mich-doch.net24. Februar 2013 — Autor der Seiten

            Versuch mal ein FLUSH PRIVILEGES; nach dem DROP USER ‘r’@'localhost’;

  6. Ralf Schneider24. Februar 2013

    Danke, aber leider negativ.

    Ist der Aufruf eigentlich korrekt; so mit Gänsefüsschen?
    „C:\Program Files\Sage\SageDB 5.0\bin\mysqld-nt.exe“ –defaults-file=“C:\Program Files\Sage\SageDB 5.0\server.ini“ –init-file=“C:\temp\mysql-zugriff.txt“

    mysql-zugriff.txt:
    DROP USER ‚r’@’localhost‘;
    FLUSH PRIVILEGES;
    CREATE USER ‚r’@’localhost‘ IDENTIFIED BY ‚m‘;
    GRANT ALL ON *.* TO ‚r’@’localhost‘;

  7. Ralf Schneider24. Februar 2013

    Wie lange benötigt der GRANT-Befehl für seine komplette Ausführung?

  8. Birgit Haider-Groß15. September 2015

    Vielen Dank!
    Hat super geklappt – musste nur den Befehl ein wenig ändern, da der Ordner nicht Programme sondern Program Files (x86) heißt (Windows 7 Pro).
    Bin ganz stolz dass ich es als „Laie“ hingekriegt hab!
    Nochmals tausend Dank!
    Endlich kann ich als Admin bisschen „mauscheln“ und bereits verbuchte Belege nochmal öffnen!

  9. thomas9. Januar 2017

    Hallo! Ich hab da mal eine Frage, bevor ich in der Datenbank rumprogrammiere! 🙂

    Wir haben jetzt Sage 50 Comfort und haben mehrere Shops und andere Internetplatformen. Der Abruf der Aufgträge der Shops erfolgt über eine PHP, die uns für jeden Auftrag eine POS / SCH Datei erzeugt (XML) …. Funkt8ioniert einwandtfrei, allerdings gibt nimmt er die EMail nicht mit (ist wohl nicht vorgesehen 🙁 ) Wissen Sie da eine Lösung, bevor ich da großartig jetzt einen PHP Script schreibe für die DAtenbank?

  10. fritz23. Januar 2018

    Hallo aus Wien!
    Habe heute mit der letzten update Version auf einem Laptop neu installiert. Dabei wird SAGE DB 5.7 mit einer 64 bit Version installiert Hier funktioniert nicht mal mehr der User nurlesen!
    Rückfrage bei Sage Österreich „Aus Datenschutzgründen“!! Kann man so etwas nachvollziehen?
    mfg
    Fritz

  11. mts31. Dezember 2018

    @Fritz
    Die Methode klappt mit jeder SQL-Version (bzw. SageDB Version).
    Lässt sich auch nur bedingt seitens Sage verhindern, da mysql immer das init-file ausführt…
    Vermute eher, dass du etwas falsch gemacht hast.

  12. FELIX4. Juni 2019

    Hallo,
    habt ihr das zum Laufen bekommen? wir stehen vor der Umstellung auf 5.7, brauchen aber den ’nur lesen‘ Nutzer, weil wir unseren shop damit synchronisieren.
    mfg

    FELIX

  13. gast7. September 2020

    nurLesen Nutzer muss man ggf. nur wieder aktivieren
    in der Datei / Serververwaltung / Serververwaltung / Serverdaten / Benutzer ,it Leseberechtigung

Antworten