Hallo,
ich habe vor kurzem Moodle auf einem Windows Server 2003 installiert. Hat auch alles soweit gut geklappt. Allerdings möchte ich die Datenbank gern auslagern und auf einem zweiten Server (ebenfalls Windows Server 2003) laufen lassen.
Im config-file habe ich einen Eintrag gefunden, bei dem als Ort für die Datenbank "localhost" angegeben ist. Daher dachte ich, wenn ich dort die IP des anderen Servers angeben würde, könnte es klappen. Nunja, so einfach wars dann wohl doch nicht, denn das funktionierte leider nicht.
Die Datenbank ist bereits per Export -> Import auf den anderen Server übertragen worden.
Aber wie teile ich moodle jetzt mit, wo diese liegt sodass wieder alles funktioniert?
Grüße,
Jessica
Dein Vorgehen sollte so schon korrekt sein. Gibt es auf der neuen Datenbank auch den gleichen User incl. Passwort wie auf dem alten Server? Kann der Moodle-Server auf den Datenbankserver zugreifen - oder ist z. B. der Zugriff auf die Datenbank generell nur für localhost möglich?
Was sagt der eingeschaltete Debug-Modus (ich hoffe mal, dass die alte Datenbank auch noch da ist
)?
Viel Erfolg
Jörg
Was sagt der eingeschaltete Debug-Modus (ich hoffe mal, dass die alte Datenbank auch noch da ist
Viel Erfolg
Jörg
Hallo Jessica,
eigentlich ist das schon der richtige Weg. Ich kenne mich jetzt nicht mit Windowssystem aus, aber auf dem entfernten Server muss die Datenbank für den externen Zugriff freigeschaltet werden und der Benutzer angepasst werden.
In der my.conf von mysql muss die bind-adresse auf die IP-Adresse des Datenbank Servers abgepasst werden (z.B. 192.168.1.200)
Der DB-Benutzer von moodle muss noch der Zugriff auf den Server erlaubt werden. Geht am Besten mit phpmyadmin.
Gruß, Jörg
So, nachdem ich erst einmal andere Dinge zu tun hatte kann ich mich nun wieder diesem Problem widmen.
Das moodle-System ist frisch installiert, d.h. die Datenbank ist im Moment bis auf die standardmäßigen Einträge der Installation, etc. eher leer. Es kann also nicht viel kaputt gehen. Die beiden Server sind im Moment ein 1:1 Abbild voneinander (bis auf IPs, etc. natürlich).
Anschließend wollte ich aus dem einen Server den moodle-WebServer machen und aus dem Zweiten den Datenbank-Server und die jeweils andere Komponente wieder entfernen sobald alles funktioniert.
Alles ist im Moment nur ein Test-Aufbau, um zu sehen wie ich die Sache lösen kann bevor ich mich an das echte System wage.
So ganz habe ich allerdings noch nicht verstanden, wie ich die Verbindung zu dem zweiten Server hin bekomme. Ich habe in der "config.php" von moodle "$CFG->dbhost" von "localhost" zu der IP des Datenbank-Servers geändert.
Wenn ich moodle dann aber aufrufe, bekomme ich die Fehlermeldung:
Error: Database connection failed.
It is possible that the database is overloaded or otherwise not running properly.
The site administrator should also check that the database details have been correctly specified in config.php
Vielleicht liegt es ja an der von euch beschriebenen Ursache, dass die Datenbank für den externen Zugriff freigeschaltet werden muss, aber wie genau mache ich das bei MySQL?
Das moodle-System ist frisch installiert, d.h. die Datenbank ist im Moment bis auf die standardmäßigen Einträge der Installation, etc. eher leer. Es kann also nicht viel kaputt gehen. Die beiden Server sind im Moment ein 1:1 Abbild voneinander (bis auf IPs, etc. natürlich).
Anschließend wollte ich aus dem einen Server den moodle-WebServer machen und aus dem Zweiten den Datenbank-Server und die jeweils andere Komponente wieder entfernen sobald alles funktioniert.
Alles ist im Moment nur ein Test-Aufbau, um zu sehen wie ich die Sache lösen kann bevor ich mich an das echte System wage.
So ganz habe ich allerdings noch nicht verstanden, wie ich die Verbindung zu dem zweiten Server hin bekomme. Ich habe in der "config.php" von moodle "$CFG->dbhost" von "localhost" zu der IP des Datenbank-Servers geändert.
Wenn ich moodle dann aber aufrufe, bekomme ich die Fehlermeldung:
Error: Database connection failed.
It is possible that the database is overloaded or otherwise not running properly.
The site administrator should also check that the database details have been correctly specified in config.php
Vielleicht liegt es ja an der von euch beschriebenen Ursache, dass die Datenbank für den externen Zugriff freigeschaltet werden muss, aber wie genau mache ich das bei MySQL?
Wie richtest Du den Datenbank-User ein? Evtl. mit PHPMyAdmin? Da kannst Du direkt mitangeben, von wo aus der User Zugriff haben darf. (Schritt 2: http://www.opensourcefan.org/anleitungen/mysql/benutzer-anlegen/mitttels-phpmyadmin.html)
Normalerweise darf ein so angelegter User nur per localhost auf die Datenbank - hier müsste z. B. die IP des Moodle-Servers angegeben werden.
Normalerweise darf ein so angelegter User nur per localhost auf die Datenbank - hier müsste z. B. die IP des Moodle-Servers angegeben werden.
Ah, ok damit bin ich schon mal einen Schritt weiter. Wenn ich beim Zugriff "Jeder Host" angebe, dann funktioniert moodle auch wieder auf dem ersten Server.
Allerdings möchte ich ja nicht, dass tatsächlich jeder Zugriff auf die Datenbank hat, sondern würde das gern auf den moodle-Server begrenzen.
Aber egal ob ich nun die IP oder den Servernamen angebe, es funktioniert nicht =/
Allerdings möchte ich ja nicht, dass tatsächlich jeder Zugriff auf die Datenbank hat, sondern würde das gern auf den moodle-Server begrenzen.
Aber egal ob ich nun die IP oder den Servernamen angebe, es funktioniert nicht =/
Jeder hat dann auch keinen Zugriff - nur der angelegte User, der aber von "jedem Ort der Welt". Aber auch nur, wenn Deine Datenbank physikalisch von außen erreichbar ist... Dennoch wäre es hier besser, wenn nur von der entsprechenden IP zugegriffen werden kann.
Was sagt denn das Error-Log von MySQL? Und welche IP hast Du eingetragen, bzw. welchen Servernamen? Laufen die beiden Server abgeschottet in einem lokalen Netzwerk - oder haben die schon "echte" IP's und Namen?
Viele Grüße
Jörg
Was sagt denn das Error-Log von MySQL? Und welche IP hast Du eingetragen, bzw. welchen Servernamen? Laufen die beiden Server abgeschottet in einem lokalen Netzwerk - oder haben die schon "echte" IP's und Namen?
Viele Grüße
Jörg
Du kannst in phpmyadmin Rechte an zwei - eigentlich noch mehr - Stellen setzen.
Fall 1:
Der Zugriff auf MySQL ist von überall her gestattet. Der Datenbankbenutzer darf aber nur von lokal aus zugreifen => die Verbindung klappt nicht
Fall 2:
Der Datenbankbenutzer darf von überall aus zugreifen. Der Zugriff auf MySQL ist aber nur lokal gestattet => die Verbindung klappt nicht
Ich vermute bei dir irgendwo da ein Rechtewirrwarr.... Wo genau und wie stellst du die Rechte um?
Gruß,
Maik
Du kannst z.B. den Zugriff auf MySQL generell von der IP <irgendeine_ip> erlauben. Du kannst auch einem Datenbankbenutzer den Zugriff von der IP <irgendeine_ip> erlauben.
Fall 1:
Der Zugriff auf MySQL ist von überall her gestattet. Der Datenbankbenutzer darf aber nur von lokal aus zugreifen => die Verbindung klappt nicht
Fall 2:
Der Datenbankbenutzer darf von überall aus zugreifen. Der Zugriff auf MySQL ist aber nur lokal gestattet => die Verbindung klappt nicht
Ich vermute bei dir irgendwo da ein Rechtewirrwarr.... Wo genau und wie stellst du die Rechte um?
Gruß,
Maik
Ich stelle die Rechte über phpMyAdmin im Tab "Rechte" ein. Dort habe ich einen Benutzer namens "moodleuser" angelegt, der vollen Zugriff auf die moodle-Datenbank besitzt.
Mit der Einstellung "Jeder Host" komme ich dann auch einwandfrei mit moodle auf die Datenbank. Gebe ich aber die IP des moodle-Servers stattdessen oder den Servernamen an (appserver03 - schon mit und ohne domain versucht), funktioniert es nicht mehr.
Ansonsten habe ich nichts umgestellt.
Mit der Einstellung "Jeder Host" komme ich dann auch einwandfrei mit moodle auf die Datenbank. Gebe ich aber die IP des moodle-Servers stattdessen oder den Servernamen an (appserver03 - schon mit und ohne domain versucht), funktioniert es nicht mehr.
Ansonsten habe ich nichts umgestellt.
Hm, stimmt auch wieder. Naja, aber sicherer wäre es dennoch, wenn ich den Zugriff auf ein paar ausgewählte Maschinen beschränken könnte.
Zum Error-Log mal eine ganz dumme Frage... wo genau wird das normalerweise angelegt? Entweder ich bin blind oder ich weiß auch nicht xD aber ich finde es einfach nicht.
Die Server haben im Moment nur lokale IPs wie z.B. 192.168.2.1 (es sind zu Test-Zwecken im Moment sogar nur virtuelle Server, die Verbindung untereinander klappt aber sonst einwandfrei).
Zum Error-Log mal eine ganz dumme Frage... wo genau wird das normalerweise angelegt? Entweder ich bin blind oder ich weiß auch nicht xD aber ich finde es einfach nicht.
Die Server haben im Moment nur lokale IPs wie z.B. 192.168.2.1 (es sind zu Test-Zwecken im Moment sogar nur virtuelle Server, die Verbindung untereinander klappt aber sonst einwandfrei).