Zugriff auf mySQL DB via PHP

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

tobi6a

Benutzer
Registriert
26. März 2015
Beiträge
4
Reaktionspunkte
0
Punkte
0
Hallo zusammen
Ich versuche zur Zeit vergeblich eine Verbindung über php zu der mySQL Datenbank herzustellen. Folgender Code wird dabei verwendet:

PHP:
<?php

$conn = mysql_connect('localhost', 'root', 'xxxxx');
if(is_resource($conn))
{
  mysql_select_db('db500069109', $conn);
  mysql_query("SET NAMES 'utf8'", $conn);
  mysql_query("SET CHARACTER SET 'utf8'", $conn);
}
?>

Als Resultat erhalte ich folgende Fehlermeldung:
"mysql_connect(): Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.\r\n"
Eine Verbindungsversuch über einen anderen Datenbankuser als "root" führte zum gleichen Ergebnis.

Welche Einstellungen sind datenbank-seitig und Port-seitig durchzuführen?
Ist die phpmyAdmin-Konfigurationsdatei "config.inc.php" zu modifizieren? Ich habe bereits folgende Anpassung vorgenommen:
$cfg['Servers'][$i]['AllowNoPasswordRoot'] = TRUE;
Leider auch ohne Erfolg... oder ist diese Änderung gar nicht mehr notwendig; Das ist aus einem Post von 2008...

Wenn ich aber die XAMPP mySQL Datenbank starte, die auf meinem Rechner installiert ist, funktioniert die Verbindung problemlos.


Tobias
 
Hallo,

hast du mal versucht, dich lokal auf der DS anzumelden und dann eine Verbindung mittels mysql-Client herzustellen?
Ich benötige dafür bei mir kein Passwort.....
Keine Ahnung, ob/wie das bei dir sein könnte...aber erstmal den simplen Weg probieren...

Micky
 
Hallo Micky
Ich bin lokal auf der DS angemeldet.
Die Verbindung über phpMyAdmin funktioniert problemlos.
Allerdings kann ich keine Verbindung über einen separaten MySQL client herstellen, weder über den Hostnamen "localhost" noch "127.0.0.1".
Die Verbindung zu der MySQL XAMPP- Installation funktioniert einwandfrei.
Der Status der Software Funktion phpMyAdmin steht auf läuft, der von MariaDB ebenfalls. Passworte wurden überall gesetzt, der Einfachheit halber die gleichen.
Am besten wäre eine Checkliste, die man durchgehen könnte... Ist denn zusätzlich zu MariaDB und phpMyAdmin ein weiteres Modul zu installieren?
Ich bin etwas ratlos...

Tobias
 
Welche PHP Version hast du auf deinem Server (NAS) ? Auf der NAS mit DSM 5.1 ist die PHP Version 5.5.21 drauf.

Laut php.net ist mysql_connect veraltet !

(PHP 4, PHP 5)

mysql_connect — Öffnet eine Verbindung zu einem MySQL-Server

Warnung

Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wird in der Zukunft entfernt werden. Verwenden Sie stattdessen die Erweiterungen MySQLi oder PDO_MySQL. Weitere Informationen finden Sie im Ratgeber MySQL: Auswahl einer API und den zugehörigen FAQ. Alternativen zu dieser Funktion umfassen:

mysqli_connect()
PDO::__construct()


Am besten liest du dort nach oder googelst nach einem Beispiel :o

Eine andere alternative ist, du kaufst dir ein aktuelles PHP 5.5 Buch, darin findest du etliche Beispiele zu den jeweiligen Befehlen. Es gibt Bücher die eine CD-Rom dabei haben mit den PHP-Code zum Testen.


Gruss Mike
 
Zuletzt bearbeitet:
Hallo
leider kein Erfolg...
Die Fehlerrückgabe lautete:
"mysqli::mysqli(): (HY000/2002): Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte."

Folgender Code getestet, (auch mit PHP Data Objects):
PHP:
<?php
$servername = 'localhost';
$username = 'root';
$password = 'xxxxx';

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

Andererseits, warum wurde über den MySQL Client die Verbindung ebenfalls verweigert?

Ich habe eine DS215J, DSM 5.1-5022 Update 4

Gruß
Tobias
 
Hallo,

ich hatte ein ähnliches Problem glaube ich.

Bei mir war in den MYSQL Einstellung die option "bind-address" nur auf localhost gestellt.

Die Datei findest du unter:

/etc/mysql/my.cnf

Nachdem ich bind-address = 0.0.0.0 gesetzt habe, hat alles funktioniert.

Aber es sei gesagt, wenn man diese Option so setzt, kann sich jede IP verbinden.
 
Bei mir war in den MYSQL Einstellung die option "bind-address" nur auf localhost gestellt.
Genau das ist es auch. Standardmäßig hört MySQL/MariaDB aus Sicherheitsgründen nur auf der lokalen 127.0.0.1-Schnittstelle. Mit der Einstellung "0.0.0.0" hört die DB auf allen Schnittstellen. Da eine DB aber keine Firewall ist, sollte man unbedingt eine Firewall-Regel erstellen um den Zugriff abzusichern!

Ansonsten sei hier noch gesagt, dass sich der Umstieg auf MySQL_PDO absolut lohnt! Es dauert eine Weile bis man den Vorteil der zunächst mit Platzhaltern versehenen Queries erkennt, aber in der Praxis kann man da mit wenig Aufwand und einem enormen Sicherheitsgewinn z.B. Queries in Schleifen ausführen. Allgemein hat PDO gegenüber den alten Funktionen in puncto Sicherheit riesige Vorteile! SQL Injection wird damit fast unmöglich, zumindest nach meinen Erfahrungen und der Literatur die ich bisher in den Fingern hatte.

MfG Matthieu
 
Da kann ich nur zustimmen.
Am Anfang war PDO sehr mühsam, aber wenn man den Bogen raus hat will man nichts mehr anderes.

Was SQL Injection betrifft, Fehlerhandling, Transaktionen,... einfach super PDO. :)
 
Hallo Harry_89
die Einstellungen in der my.cnf sind bereits auf die adresse 0.0.0.0 gestellt:

[client]
port = 3306
socket = /run/mysqld/mysqld.sock

[mysqld]
bind-address = 0.0.0.0
port = 3306

Trotzdem vielen Dank für den Tip!

Tobias
 
Darf denn auch der Benutzer von allen Adressen aus zugreifen? Auch da lassen sich Einschränkungen bestimmen.

MfG Matthieu
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat