PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySql Server hinter FritzBox aus dem Internet erreichen



braesident
14.09.17, 11:46
Debian 9.1 - per apt-get install: Apache2 - PHP7.0 - libapache2-mod-php7.0 - mysql-server - mysql-client - PHP7.0-mysql

Ich habe natürlich die Beiträge hier im Forum dazu gesehen und auch einige andere im Netz. Hat leider nicht geholfen.

Was hab ich gemacht:

die in der Kopfzeile genannten Pakete installiert. (Bei mysql-server wurde nicht wie in einigen Anleitungen zu sehen nach ein PW für root gefragt. - Aber ich denke das ist Ok da dieser User eh nicht angerührt werden sollte)
Maria gestartet und folgende Kommandos eingegeben: CREATE USER 'ext_User'@'%' IDENTIFIED BY 'password'; und GRANT ALL PRIVILEGES ON *.* TO 'ext_User'@'%' WITH GRANT OPTION;
gestern noch in die fast leere '/etc/mysql/my.cnf' bind-address 0.0.0.0 eingetragen (überall ist zu lesen das als standard 127.0.0.1 eingetragen ist. Hier war außer Kommentare und 2 Includes nichts eingetragen.)
und in der FritzBox die Portweiterleitung gesetzt: TCP | von Port 3306 bis Port 3306 | an PC 'name' | an IP 192.168.usw an Port 3306
Testumgebung geschaffen mit CREATE DATABASE testdb; use testdb; CREATE TABLE testtabelle (id INT(11) PRIMARY KEY AUTO_INCREMENT, identifier VARCHAR(2=));


Gestern hatte ich noch zusätzlich phpmyadmin installiert und konnte von einem anderen Rechner im Netzwerk darauf zugreifen.

Leider ging nach einem Neustart des gesamten Systems gar nichts mehr. Es kamen Fehlermeldungen das phpmyadmin eine Datei vermisse '/var/run/mysqld/mysqld.sock'. (Nur warum sollte sie bei einem Neustart verschwinden)
Heut Vormittag hab ich das ganze System nach 2Std. Recherche neu aufgesetzt. So wie oben beschrieben.

Übrigens zeigt mir /etc/mysql ls -l my.cnf -> /etc/alternatives/my.cnf
Ist das ein Verweis oder link? beide sind zumindest identisch leer

Das Programm das die Verbindung aus dem I-net aufrufen möchte - schmeißt immer die Fehlermeldung: Unable to connect to any of the specified MySQL hosts.
Als Verbindung geb ich natürlich meine Externe IP an bzw eine DynDNS.

marce
14.09.17, 12:05
Läuft der MySQL denn überhaupt? Kannst Du Dich lokal anmelden? Was steht in den Logs?

Abgesehen davon, daß "MySQL über's Internet" per se keine gute Idee ist - ein VPN wäre da angesagt...

bmk
14.09.17, 12:16
Zum Verständnis:

phpmyadmin greift lokal auf die mysql-Datenbank zu, d.h. wenn der apache-Webserver auf dem gleichen Rechner läuft wie die Datenbank, muss von außen nur der Webserver erreichbar sein.

Anders sieht es aus, wenn man von außen direkt auf die Datenbank zugreift (z.B. mit libreoffice-base), dann muss in der Firewall der Port 3306 freigeschaltet sein und in der mysql-Konfig bind-address = 0.0.0.0 (oder eine dedizierte IP-Adresse) eingetragen sein.

braesident
14.09.17, 12:26
Ich hoffe das ist das richtige und du meinst service mysql status - dieser sagt kurzgefasst loaded, active (running)

Vorhin kam ich mit 'mysql -u root' auch rein. Hab so den User und die Tabelle angelegt. Mit dem oben genannten User: ext_User nicht. Was aber wahrscheinlich an der host Angabe (%) liegt, oder?

Jetzt komm ich nicht mehr rein:
mysql -u root
a) unknown option 'bind-address 0.0.0.0'
ODER
b) unknown variable 'bind-adress=0.0.0.0'

entferne ich bind-address komplett, komme ich auch rein

EDIT:

Hallo bmk,
ich habe ein in C# geschriebenes Programm das eine Mysql Verbindung herstellen möchte. Wenn ich dich recht verstehe ist der mysql Server nicht vom Apache Server abhängig? Und Apache hätte für diesen Fall wegbleiben können?

braesident
14.09.17, 13:07
Sorry wegen dem Doppelpost - hab die Log vergessen

21265

bmk
14.09.17, 15:27
Tippfehler bei address (2 d!) ?

bei mir steht:
bind-address = 0.0.0.0

Bei phpmyadmin übernimmt php als apache-Modul die Kommunikation mit dem Db-Server über den mysqli-Treiber lokal(127.0.0.1).

Nach "außen" werden lediglich Inhalte und Eingaben transportiert, das erledigt Apache über den Port 80.

Wenn man von außen direkt auf dem DB-Server zugreift, wird der Datenbanktreiber des Clients verwendet, dazu braucht es dann den apache auf dem Server nicht mehr.

Gruß bmk

braesident
14.09.17, 22:28
nur falsch abgetippt.

Ich hab aber herausgefunden das vor bind-address folgendes gehört -> [msqld]
So wird die Variable nun wenigstens erkannt und ich komme lokal wieder rein.

Leider schaffe ich es nicht von außen darauf zuzugreifen.

Müsste ich eine Antwort bekommen mit einem telnet öffendlicheIP 3306?
oder kann das so nicht funktionieren?

Gelesen hab ich auch das für den Remotezugriff in der my.cnf bind-address = mysql-server-IP eingetragen werden muss. Hat aber auch nicht geholfen.

bmk
15.09.17, 10:29
In der /etc/mysql/mariadb.conf.d/50-server.cnf beginnen die Server-Einstellungen üblicherweise hinter der Sektion [mysqld]

Die anderen Sektionen sind nur dafür da, wenn zusätzlich andere Versionen bzw. mysql in der Urversion verwendet werden.

Es gibt da noch einige andere Konfigurationsdateien, das ist bei Debian schon etwas verwirrend.

Den Zugriff von außen kannst Du mit Tools wie z.B. heidisql (www.heidisql.com, gibt es auch als portable Windows-Version) testen.
Verbindungstyp MySQL (TCP/IP) und Hostname/IP eintragen, der Port 3306 sollte voreingestellt sein.

Im Zweifelsfall mal die 50-server.cnf posten.

Gruß bmk

braesident
15.09.17, 13:54
Dankeschön, HeidiSql ist ein guter Tipp.

HeidiSql sagt immer can't connect to MySQL Server on 'meineIP'

21266
21267

bmk
15.09.17, 15:14
Bei mir steht bind-address = 0.0.0.0 in 50-server.cnf in Zeile 29 !

Wie in /etc/mysql/my.cnf angegeben, wird die 50-server.cnf zuletzt abgearbeitet !

braesident
16.09.17, 00:36
Also besten Dank.

Nun läufts.

Das Problem lag an der FritzBox, obwohl diese eine Button namens Übernehmen bei der Portweiterleitung hat, musste diese neugestartet werden.

Und wegen bind-address funktioniert beides: 0.0.0.0 und auch die IP des MySql Servers selbst.

Jetzt muss ich nur noch herausfinden was ich beachten muss wenn ich den ganzen Server ausschalte oder neu starte um nicht wieder Dateiverlust zu erleiden :)