• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

DB auf anderem Hosts ansprechen ?

jenny79

Newbie
Hallo Leute!
Habe folgendes Problem:
Möchte gerne von einem webspace mit einem script auf die Datenbank auf einem anderen Server zugreifen, aber das klappt wohl nicht!
wenn ich jetzt diesen code mit port probiere geht es nicht:
Code:
$db_news=mysql_connect("www.domain.com:3306","web1","passwort")
or die (mysql_error());
Fehlermeldung:Lost connection to MySQL server during query

Sonst habe ich nochmal den port:8443 probiert, weil das im phpmyadmoin oben in der adresszeile steht, geht aber auch nicht (ohne gehts auch nicht).

Ist doch komisch denn wenn ich auf dem Server wo auch die Datenbank ist das script ausführe, und localhost als host eintrage dann funktioniert es!

Wie kann ich denn den MySQL-Server konfigurieren dass er Verbindungen über das Netzwerk annimmt, vielleicht liegt es ja daran?

Lg
Jenny
 

Urkel_

Newbie
Das kann 2 Gründe haben:

1) Der DB-User kann nur lokal auf die Datenbank zugreifen. Hier würde helfen ein zusätzlicher User mit eingeschränkten Rechten für den Fernzugriff anzulegen.

2) Die Firewall blockt den Port auf dem die Datenbank lauscht. Hier müsste die Firewall konfiguriert werden.

In beiden Fällen solltest Du Dir aber Gedanken über die Sicherheit der Daten machen.
 

dl4ntc

Newbie
Hi,

schonmal in der Datei 'my.cnf' nach geschaut ?

Dort ist der Eintrag 'skip-networking' aus zu kommentieren und damit ist Dein MySQL-Server nach einen Neustart auch über das Netzwerk erreichbar.

Gruss Detlef
 

Leviathan

Hacker
Ist (wahrscheinlich) so wie Urkel bereits erwähnte. Es ist nicht jedem User, von jedem X-beliebigen Rechner, erlaubt SQL Statements auf einer Datenbank abzusetzen.

Das ist in der DB Mysql/ Tabelle Users festgelegt.

Siehe user 'root', der darf fast alles (sieht man an den Y), aber auch nur von localhost
Code:
mysql> select * from user;
+-----------------------+----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+
| Host                  | User     | Password         | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections |
+-----------------------+----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+
| localhost             | root     | 1650b4197ac6fadd | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | N            | N          | N                     | N                | N            | N               | N                |          |            |             |              |             0 |           0 |               0 |

Um von deinem Client aus Zugriff zu erlauben musst du auf der Datenbank folgendes Statement ausführen.

Code:
GRANT ALL PRIVILEGES ON [Datenbankname].* TO 'web1'@'[rechnername des clients, oder IP]'  IDENTIFIED BY 'passwort';
flush privileges;

Wenn du trotzdem keinen Zugriff erhälst, liegts sehr wahrscheinlich an einer Firewall.

Gruß Dominik
 
Oben