MySQL 4 unter Debian/Ubuntu (für CAO)

Da die freie Warenwirtschaft & Buchhaltung CAO (www.cao-faktura.de) aus verschiedenen Gründen nicht mit MySQL 5 klarkommt (bzw. klarkommen will), folgend die nötigen Schritte einer MySQL 4 Installation parallel zu Mysql 5 unter Debian Etch (sollte aber auch mit anderen Distributionen so klappen). MySQL 4 wird in diesem Beispiel auf Port 3307 laufen.

Installation

groupadd mysql4
useradd -m -d /usr/local/mysql4 -s /bin/false -g mysql4 mysql4
apt-get install build-essential libncurses5-dev
 
wget http://sunsite.informatik.rwth-aachen.de/mysql/Downloads/MySQL-4.1/mysql-4.1.22.tar.gz
tar xvfz mysql-4.1.22.tar.gz
cd mysql-4.1.22
 
./configure --prefix=/usr/local/mysql4 \
--with-unix-socket-path=/usr/local/mysql4/var/mysqld.sock \
--with-mysqld-user=mysql4 \
--with-server-suffix=mysql4 \
--with-tcp-port=3307
 
make && make install
/usr/local/mysql4/bin/mysql_install_db
cp /usr/local/mysql4/share/mysql/mysql.server /etc/init.d/mysql4
cp /usr/local/mysql4/share/mysql/my-medium.cnf /usr/local/mysql4/var/my.cnf
chown -R mysql4:mysql4 /usr/local/mysql4
 
/etc/init.d/mysql4 start

MySQL 4 läuft nun auf Port 3307. Es ist noch notwendig dem Benutzer „root“ noch ein Password zu geben. Danach ist Anlegen und Import der CAO-Datenbank möglich.

/usr/local/mysql4/bin/mysqladmin -P 3307 -u root password "xvz"
/usr/local/mysql4/bin/mysql -p -P 3307

CAO spezifisch

Nach Eingabe des soeben festgelegen Passworts ist nun eine MySQL-Shell offen. Folgende Statements legen die CAO Datenbank und Benutzer an.

Nachtrag: Da der CAO Mysql-Client nicht mit den neuen Password-Hashes ab MySQL4 zurecht kommt, muss dieses mit der OLD_PASSWORD Funktion gesetzt werden.

CREATE DATABASE cao;
GRANT ALL ON cao.* TO cao@'%' IDENTIFIED BY 'xyz';
SET PASSWORD FOR cao@'%'=OLD_PASSWORD('xyz');
FLUSH PRIVILEGES;

Import der alten Datenbank

/usr/local/mysql4/bin/mysql -p -P 3307 -D cao < cao.sql

Clientseitig ist in der CAO32_DB.cfg der MySQL-Port noch zu verändern:

M001_PORT=3307

36 Antworten auf „MySQL 4 unter Debian/Ubuntu (für CAO)“

  1. Herzlichen Dank für das Tutorial.
    Hat mir letzte Nacht wirklich sehr geholfen, denn nach dem Upgrade von Sarge auf Lenny hatte ich kein MySQL4 mehr 🙁

  2. Hallo Leute,
    erst einmal vielen Dank für das Tutorial. Schade das ihr kein Namen veröffentlicht, ist so unpersönlich. Ich möchte für mich einen kleinen Datenserver mit CAO Datenbank unter Debian5 Lenny installieren. Bin nach der Anleitung vorgegangen, aber ohne Erfolg. Ich bin allerdings kein Profiauf der Console (noch lernfähig). Ich vermute, das Debian5 seine Dateien vielleicht anders installiert als Debian4.
    Nach ./configure… bekomme ich folgende Fehlermeldung
    configure: error: no acceptable C compiler found in $PATH

    Kannst du mir da weiterhelfen??
    Bin ein wenig um Hilfe verlegen.

    Lieben Gruß
    Zeljko

  3. Das Paket libncurses5-dev muss auch installiert sein.
    Um MySQL4 beim Booten zu starten, muss noch ein „update-rc.d mysql4 defaults“ hinterher geschoben werden.

  4. Nach einem Serverneustart geht der MySQL 4 nicht mehr. Beim Starten schreibt er nur (in der Konsole) „Starting MySQL“
    und dann geht er trotzdem nicht.

    In der syslog steht dann:
    Jul 7 12:47:53 server mysqld_safe[4263]: A mysqld process already exists

    dies hat aber bisher immer geklappt. Und: ja, natürlich läuft ein zweiter mysql! Ich hab ja 4 und 5 paralell nebeneinander am laufen.

    Kennt da jemand einen Weg?

    Danke und LG!

  5. Hi, ich kann mir nicht vorstellen, dass diese Vorgehensweise nicht auch unter Lenny funktionieren sollte… Getestet habe ich es direkt nicht – aber wohl von Etch zu Lenny geupdated und MySQL 4 läuft noch immer…

  6. Hallo,

    ich versuche gerade Mysql auf Lenny zu installieren.
    Ich bleibe aber schon bei den Befehl :
    useradd -m -d /usr/local/mysql4 -s /bin/false -g mysql mysql4
    hängen .Es kommt dann useradd: unknown group mysql
    Es ist ein Lenny minimalsystem.
    Bitte um hilfe.

  7. Hi, das liegt wohl daran, dass ich Mysql 5 parallel laufen habe (die Gruppe mysql also schon existierte). In deinem Fall sollte vorher noch ein „groupadd mysql“ ausgeführt werden…

  8. Hallo,

    ups habe den Fehler selbst gefunden .
    Wer lesen kann ist klar im Vorteil
    Muss ich für Cao noch was an der Datenbank umstellen?(außer den cao Client auf port 3307 zu setzen?
    wenn ich mich mit cao versuche einen neuen Mandanten anzulegen und teste kommt das der Server erreichbar ist aber der Zugriff ist verwert

  9. Hi,
    dies liegt wahrscheinlich daran, dass CAO nicht mit den „neuen“ Password-Hashes zurechtkommt. Die Anleitung ist um ein paar Befehle erweitert…

  10. Hallo,

    super !!!!
    vielen Dank!!!!
    Kann mir einer eine Beschreibung nennen wie ich unter Lenny einen ssh-tunnel zur Datenbank einrichte.(zugegriffen wird von Windows aus)Habe mit Debian nicht viel erfahrung

  11. sorry. hätte zuende lesen sollen. es hat ja schon geklappt.

    Ich habe allerding auch ein mysql problem
    Mysql startet garnich, und im syslog steht auch nicht warum. eigentlich steht da garnichts bezügl. mysql.

    irgendjemand ne idee?

    lg
    chris

  12. Also ich würd die wiki noch n bisschen überarbeiten wie z.b
    apt-get install build-essential und
    apt-get install libncurses5-dev
    dann wäre die ganze sache perfekt. naja und es muss ein sql server installiert sein damit er die gruppe mysql kennt, ausser man nimmt groupadd mysql dann funzt es auch

    MFG Müller Martin

  13. Hallo

    Ich erhalte folgende Fehlermeldung bei ./configure:
    checking for termcap functions library… configure: error: No curses/termcap library found

    System: Debian Lenny.

    Danke, Markus

  14. wieso schreibt er mir nach eingabe der zeile:
    /usr/local/mysql4/bin/mysqladmin -P 3307 -u root password „xvz“
    (hab „xvz“ mit neuem passwort ersetzt)

    /usr/local/mysql4/bin/mysqladmin: connect to server at ‚localhost‘ failed
    error: ‚Access denied for user ‚root’@’localhost‘ (using password: YES)‘

    was kann ich tun? ein pw für mysql4 wurde doch in der installation noch nicht gesetzt.

  15. Sollte jemand Probleme haben das der Server nicht automatisch unter Debian gestartet wird empfehle ich/etc/init.d zu überprüfen. Dort sollte das Script „mysql4“ zu finden sein, einfach „insserv mysql4“ ausführen und das Script wird beim booten in den entsprechenden Runlevels gestartet. Notfalls einfach ein eigenes „init.d Script“ schreiben das geht mit genügend Linux Erfahrung relativ schnell.

    Falls insserv die Meldung ausgibt das „mysql“ bereits existiert da bereits Mysql 5 oder höher installiert ist sollte der Scriptname von „mysql“ zu „mysql4“ geändert werden. Der Name ist im Script unter „# Provides: …“ zu finden.

  16. Hallo und besten Dank für die Anleitung.

    Nach einem Servercrash waren wir in 30 Minuten wieder mit unserem CAO online 🙂
    Einzig der Importaufruf:

    /usr/local/mysql4/bin/mysql -p -P 3307 -D cao &lt; cao.sql

    ist so besser:

    /usr/local/mysql4/bin/mysql -p -P 3307 -D cao < cao.sql

    Dann braucht man bei einer "frischen" Squeeze Installation nur noch "Drag and Drop" 🙂

    Gruß, Heiko

  17. Ich hatte diese Anleitung bereits vor einiger Zeit einmal erfolgreich umgesetzt auf einem Ubuntu-Server.

    Jetzt versuche ich dies allerdings auf einem gemieteten vServer mit CentOS 5 und bereits bestehender MySQL 5.0 DB für die dort gehosteten Websites.
    Da die zu installierenden Paketnamen in der Welt von Red Hat anders lauten, bin ich nach einigem googeln auf die folgenden gestoßen und habe diese per yum installiert:
    gcc gcc-c++ kernel-devel make automake ncurses-devel
    Damit hat dann schonmal make funktioniert, allerdings wurde das Datenverzeichnis /usr/local/mysql4/var nicht automatisch angelegt. Also noch ein mkdir /usr/local/mysql4/var eingefügt.

    Wobei ich jetzt aber nicht mehr weiterkomme:

    /etc/init.d/mysql4 start
    Starting MySQL................................... ERROR!

    Mehr sagt mir die Konsole dabei nicht. Und in /var/log/mysqld.log steht nur folgendes:

    mysqld started
    [ERROR] Can't start server : Bind on unix socket: Permission denied
    [ERROR] Do you already have another mysqld server running on socket: /usr/local/mysql4/var/mysqld.sock ?
    [ERROR] Aborting
    [Note] /usr/local/mysql4/libexec/mysqld: Shutdown complete
    mysqld ended

    Zu dem Fehler hab ich jetzt schon einige Stunden Google bemüht aber ohne Erfolg.
    Der MySQL5-Server läuft unter /var/lib/mysql/mysql.sock
    Die Berechtigungen habe ich auch schon einige Male geprüft und neu gesetzt, ich dachte eigentlich hiermit sollte es laufen: chmod -R 755 /usr/local/mysql4

    Aber scheinbar gibt es ja immer noch Probleme mit den Berechtigungen, nur ich komme jetzt mit meinen begrenzten Linux Kenntnissen dort einfach nicht mehr weiter.

  18. Für alle die bei Cao Admin die Meldung erhalten dass zwar tabellen enthalten sind aber nicht verwendet werden können.

    In /usr/local/mysql4/var/my.cnf folgende Zeile einfügen:
    lower_case_table_names=1

    Das bewirkt, dass Mysql die Tabellen nicht case sensitive behandelt.

  19. Vielen Dank für die Anleitung. Auch im Jahr 2015 gibt es noch Leute, die anhand dieser Anleitung erfolgreich auf einem Debian 7.8 diese uralte CAO Faktura installieren. Wo ist der paypal-Link?

  20. Geile Anleitung.
    Mal sehen, wie weit ich am WE komme.

    Habe folgendes vor:
    MySQL4 auf Raspi 2.
    2 Sticks als Raid System.
    Auf das USB Stick Raid die Datenbank auslagern.
    Die SD Karte optimieren wegen den Schreibzugriffen.
    Automatisch alle 7 Tage ein Komplettes Backup in die Cloud.

    Mal sehen, ob ich das zusammenbringe 😀

  21. den Sticks würde ich aber nicht trauen. Lieber ein paar ordentliche Platten die auch für RAID ausgelegt sind, gibts auch als USB. Die 100€ wäre es mit Wert. RAID Recovery/Datenverlust ist meist teurer 😉

  22. Hallo und VIelen Dank für diese tolle Anleitung!

    Ich hätte eigentlich nur eine kleine Frage.
    Wird der „mysql-4.1.22“ Ordner nach einer erfolgreichen Installation denn noch benötitgt?

    Vielen Dank schonmal im vorraus.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.