VoIpOnCd: Could not connect to database / Datenbank auf anderem Server

uhd

Mitglied
Mitglied seit
2 Jan 2006
Beiträge
206
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich möchte gerne meine Asterisk Datenbank auf einem anderen Sql Server (extern haben).
(Auf dem anderen Rechner ist die Database.sql bereits hochgeladen worden in die Tabelle "asterisk".
Der Username ist mit dem Tabellennahmen identisch und die DB ist für den externen Lese und Schreizugriff freigegeben)

Möglicherweise müssen die Ports angepasst werden !?! SQL Port vom anderen Server wäre 8360 soweit mir bekannt ist.

Fehlermeldung: Could not connect to database / Datenbank auf anderem Server

History:
Ich habe die folgenden Files in /etc/asterisk geändert:

Code:
res_mysql.conf:
[general]
dbhost = 80.xxx.xxx.xxx
dbname = asterisk
dbuser = asterisk
dbpass = ****
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock   [b]<< muss hier etwas anders sein wg anderem server?[/b]

Code:
 cdr_mysql.conf
[global]
dbhost = 80.xxx.xxx.xxx
dbname = asterisk
dbuser = asterisk
dbpass = ****
user=asterisk     ([B]<<< Unterschied DBuser !?![/B])
port=3306
sock=/var/run/mysqld/mysqld.sock   [b]<< muss hier etwas anders sein wg anderem server?[/b]
userfield=1

Code:
cdr_pgsql.conf
[global]
;hostname=80.xxx.xxx.xxx
;port=5432
;dbname=asterisk
;password=****
;user=asterisk
;table=asterisk              ;SQL table where CDRs will be inserted
 
Zuletzt bearbeitet:
Na dann pass doch den Port an...

Wenn alles gleich geblieben ist zu Deiner Referenzinstallation bis auf den Port und die Adresse des Mysql-Servers (myql-standard 3306), na dann pass doch den Port an.
Und wenn in den Codeschnipseln,welche du gepostest hast der Port und die Adresse gesetzt wird, dann weißt du ja auch wo du Deinen Port auf 8360 und die Adresse setzen mußt.
Erfolg bei der Umsetzung!

PS:
Der letzte Schnipsel sieht nach Kommentar aus.
Mehr schreibe ich dazu nicht!
 
Zuletzt bearbeitet:
pete-patata schrieb:
Wenn alles gleich geblieben ist zu Deiner Referenzinstalltion bis auf den Port und die Adresse des Mysql-Servers (myql-standard 3306), na dann pass doch den Port an.

Ja das habe ich versucht, hat jedoch nichts an der Tatsache geändert das er keine Verbindung aufbaut.
Der andere Server läuft mit einem SuSe.
Kann es unter umständen sein, dass ich diese Zeile bei Suse anderes schreiben muss ?

Code:
dbsock = /var/run/mysqld/mysqld.sock

Ich habe mal mit find nach der Endung gesucht und kann sie auf dem DB Server nicht finden. So wie es jetzt da stehen muss passt Sie auf das Debian System. (wenn Änderung Ja: In was)

pete-patata schrieb:
PS:
Der letzte Schnipsel sieht nach Kommentar aus.
Mehr schreibe ich dazu nicht!

Ja das ist alles ausgeklammert, dass habe ich gesehen. Habe es nur mit gepostet falls etwas geändert werden soll.
Die Dateinamen stehen jeweils in den ersten Zeilen...

Danke für Euere Mühe schonmal :-)
 
Nun denn: schreibe ich doch mehr ...

Du hast also in der Konfigurationsdatei des Asterisk-Servers den neuen Port und die neue Hostadresse eingetragen/abgespeichert und einen Neustart des Servers durchgeführt?
Und Du hast Dich vergewissert, dass auf Deinem Debian System ein Mysql-Server läuft der auf Port 8360 auf sql-Befehle wartet und ein Verzeichnis /var/run/mysqld/mysqld.sock existiert(?),
welches vom Asterisk in folgender Konstellation benötigt wird:
Code:
 ; Sample configuration for res_mysql.conf
 ;
 ; The value of dbhost may be either a hostname or an IP  address.
 ; If dbhost is commented out or the string "localhost", a connection
 ; to the local host is assumed and dbsock is used instead of TCP/IP
 ; to connect to the server.
 ;
 [general]
 dbhost = localhost
 dbname = asterisk
 dbuser = asteriskuser
 dbpass = SuPERpassW0rt
 dbport = 3306
 dbsock = /var/run/mysqld/mysqld.sock
D.h. in den Kommentarzeilen soviel wie:
Ist der dbhost = localhost oder der dbhost auskommentiert(;), wird anstatt einer tcp/ip Verbindung (über die eingetragene IP oder den Domainnamen) eine Verbindung direkt über den DBsocket aufgebaut.
(Nehme ich zumindest an und man verbessere mich bitte, wenn ich mich irre).
Wenn ich Dich richtig verstanden habe läuft Dein Asterisk auf einem anderem Rechner als Dein Mysql-Server.
Also muß ich annehmen, das ' dbsock = /var/run/mysqld/mysqld.sock' für Dein Problem nicht relevant ist.
PS:
In /var/run werden Daten aktiver Prozesse abgelegt.
(Das behaupten zumindest Ergebnisseiten einer Suchmaschine).

Nun, sollte in diesem Text nicht die Lösung Deines Problems zu finden sein, dann kann ich Dir wohl nicht helfen.
 
Guten Tag Zusammen,

vielen Dank, pete-patata, für die Antworten.

Es ist richtig die Asterisk Software soll auf dem "kleinen Debian Server" laufen und die Datenbank auf dem normalen Rootserver via Remote.
Den Port vom Root-Server habe ich nun auf die 3306 gesetzt (anschließend via nmap geprüft).

PHP:
nmap ROOT-SERVER-IP
...
3306/tcp open     mysql
...

Der Datenbankbenutzer und die Datenbank habe ich für die externen Zugriffe beide freigeben. Lese und Schreibrechte sind Vorhanden. Die Datenbank habe ich auf den Root-Server eingspielt.
Ich kann über die Shell vom Debian Server auf die datenbank vom Root-Server zugreifen:

Code:
mysql -h ROOT-SERVER-IP -u asterisk -p asterisk
Enter password: * * * *
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 80949 to server version: 4.0.18

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> INSERT INTO `numberpool` VALUES ('7009', 'Schreibtest mit der Rufnummer 7009');
Query OK, 1 row affected (0.02 sec)

Schreibtest: Erfolgreich via Remote durchgeführt.

Da der lokale MySql Server leider nicht startet konnte ich leider keinen lokalen Test durchführen. Selbst bei der Brechstangen-Methode (mysql stoppen, löschen, komplett neu installieren) kommt beim versuch ihn dann zu starten ein Fehler. Ich werde unabhängig davon den Server nochmal neu installieren.

Test 2: Ausschlussverfahren:
Mit einem Debian Testserver von server4you klappte die Installation problemlos. Sobald ich aber die Remote Daten vom MySql entrage erhalte ich die gleichen Fehler wie auf meinem kleinen Debian Server.

Kann mir hier jmd helfen / Hatte jmd evt das gleiche Problem ?
Alle Daten inkl. Dateinamen die ich editiert habe findet ihr oben in diesem Post.
 
Hallo uhd

Ist der Mysql-Benutzer so eingerichtet, dass er von jedem beliebigen Rechner aus auf den MySql-Server zugreifen darf oder nur vom Localhost?
Beachte und Vergleiche:
http://dev.mysql.com/doc/refman/5.1/de/adding-users.html

PS:
Die cdr_pgsql.conf scheint mir für postgre sql zuständig zu sein.
 
Zuletzt bearbeitet:
-- sinnloses Fullquote entfernt -- bt

Hallo Pete-Patata,

der MySQL Benutzer ist von jeden Rechner aus zugreifbar:

Code:
mysql> INSERT INTO `numberpool` VALUES ('7009', 'Schreibtest mit der Rufnummer 7009');
Query OK, 1 row affected (0.02 sec)

Dieser Befehl wurde von den Server aus durchgeführt auf den Asterisk laufen soll.
Der Datenbankserver liegt auf einem anderen Rechner.
 
Zuletzt bearbeitet von einem Moderator:
Falls Du das überprüfen möchtest, log Dich an dem MySQL-Server ein.
Gib folgendes ein:
use mysql
um die DB zu wechseln,
und dann:
select user, host, password from user;
um die von mir gewünschte Information zu ergattern.
(Nur um diese Möglichkeit definitiv auszuschliessen.)
Auf jeden Fall sollte dein Asterisk-Benutzer % als host eingetragen haben.
 
-- sinnloses Fullquote entfernt -- bt

Der Benutzer ist deffinitif freigeschaltet und "%" wurde bei Host eingetragen. (=von jedem belibigen Host)
 
Zuletzt bearbeitet von einem Moderator:
Ok, das ist es also nicht...

Du hast sowohl in der
res_mysql.conf
als auch in der
cdr_mysql.conf
Deinen Mysql-Server eingetragen?
 
kommentiere doch in Deinen conf Dateien einfach mal die Zeilen mit dem Socket und dem Port aus.
 
Guten Abend zusammen,

danke für Eure Antworten.

@pete-patata: Ja, siehe oben in meinem ersten Post habe ich alle Änderungen als Code gepostet. Dateinamen stehen jeweils in der ersten Zeile

@betateilchen: Ich habe in beiden Dateien ein ";" vor die Socket Zeile getippt.
(>Ohne Erfolg, leider)
 
Kostenlos!

Statistik des Forums

Themen
248,853
Beiträge
2,302,880
Mitglieder
378,501
Neuestes Mitglied
Dalle85