MySQL Datenbank verweigert den Zugriff, wie löse ich das Problem?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die erste Fehlermeldung besagt, dass du nicht mehr die mysql_* Funktionen benutzen sollst, da sie "deprecated" (= veraltet) sind. Noch funktionieren sie zwar, aber ab PHP 7 wurden sie ganz entfernt. Als Alternativen kannst du mysqli oder noch besser gleich PDO verwenden (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers).

Der Fehler, der dafür sorgt, dass dein Script nicht funktioniert, ist aber der zweite, "Access denied for user" heißt, dass etwas mit den Zugangsdaten nicht stimmt, also du hast den falschen Usernamen oder das falsche Passwort benutzt (bzw dich bei einem davon vertippt halt). Bist du dir sicher, dass man dieses ganze "niXXXXXXX_XsqlX'@'vwebXX.nitrado.net" als MySQL Benutzername braucht? Sieht mir ziemlich ungewöhnlich aus, meist ist es ein einfacher Username (nur das vor dem @ vielleicht?), aber kA wie das bei Nitrado gemacht wird.




Balco  03.11.2016, 12:45

Das mit dem @ ist schon korrekt. In der Fehlermeldung wird 'benutzername'@'host' angegeben. In diesem Fall ist niXXXXXXX_XsqlX der Benutzername und vwebXX.nitrado.net der Host.

2
mastema666  03.11.2016, 12:54
@Balco

Ah, jo, stimmt ja... 

Fehler bleibt aber ansonsten ja der gleiche,  Benutzername oder Passwort ist falsch.

2
Niklas 
Fragesteller
 03.11.2016, 15:14
@mastema666

Der Benutzername kann nicht falsch sein, den habe ich aus dem Interface kopiert.

Beim Passwort habe ich das der Datenbank angegeben, sollte also auch stimmen. Oder muss das PW vom Account rein?

Danke euch beiden!!

0
mastema666  03.11.2016, 15:28
@Niklas

Das hängt vom Anbieter ab, normalerweise gibt es entweder ein PW für alles oder eben eins für FTP und eins für die DB (was imho auch sinnvoller ist, aber das andere hab ich auch schon erlebt), wenn da eins speziell für die DB angegeben ist sollte das aber auch das richtige sein.

Kommst du denn via phpMyAdmin mit diesen Benutzerdaten rein? Falls du mit den Daten auch so nicht in die DB kommst wäre es wohl am sinnvollsten Mal beim Nitrado Support nachzufragen.

Möglicherweise ist Benutzername oder PW sogar falsch gerade weil du es kopiert hast, hatte ich auch irgendwo mal, da wurde beim kopieren immer irgendein unsichtbares Sonderzeichen mitgenommen, manuell eingetippt wars dann kein Problem.

Grundsätzlich ist die Fehlermeldung allerdings eindeutig, es stimmt halt Username oder PW nicht (oder beides), wobei es natürlich auch ein Fehler seitens des Hosters beim Anlegen der DB oder des Users sein könnte, auch wenn das normalerweise automatisch gehen sollte (und Nitrado ja nun auch nicht gerade ein ganz kleiner Hoster ist, aber wer weiß).

2
Niklas 
Fragesteller
 12.11.2016, 16:00
@mastema666

Jede Datenbank ist mit einem eigenen Passwort gesichert, genau.

Kommst du denn via phpMyAdmin mit diesen Benutzerdaten rein?

Ja, das klappt einwandfrei. Ich habe es nun auch nochmal geändert und es ist 100%ig richtig.

BTW: Ich habe ein komlett neues Script geschrieben, angepasst an MySQLi und erhalte immernoch diese Fehlermeldung, allerdings gleich auf der Login-Seite (habe die connect.php outgesourct und in die Haupt-HTML-Datei eingebunden).

Warning: mysqli_connect(): (HY000/1045): Access denied for user 'niXXXXXXX_1sql5'@'vweb15.nitrado.net' (using password: YES) in /var/customers/webs/niXXXXXXX_1/login/connection.php on line 6

Ich bin überfragt, könnt ihr helfen?

0
mastema666  12.11.2016, 16:13
@Niklas

Hmm, kannst du diese "connection.php" mal posten?
Wenn du via phpMyAdmin ja rein kommst müssten die Logindaten ja stimmen, bleibt also eigtl nur ein Fehler im Code, der die Verbindung herstellt.

Natürlich ohne die echten Logindaten ;) (und möglichst nicht hier direkt sondern auf z.B. http://pastebin.com damit mans auch lesen kann).

1
mastema666  12.11.2016, 16:38
@Niklas
define('DB_SERVER', 'vweb15.nitrado.net');

Versuch es dort mal statt des "vweb15.nitrado.net" mit "localhost" oder ggf auch "127.0.0.1", sonst fällt mir da grad nichts auf.

1
Niklas 
Fragesteller
 12.11.2016, 16:43
@mastema666

Wenn ich "localhost" eintrage, erscheint:

Warning: mysqli_connect(): (HY000/2002): No such file or directory in /var/customers/webs/niXXXXXXX_1/login/connection.php on line 6

Und wenn ich die IP 127.0.0.1 eintrage:

Warning: mysqli_connect(): (HY000/1045): Access denied for user 'niXXXXXXX_1sql5'@'localhost' (using password: YES) in /var/customers/webs/ni1040299_1/login/connection.php on line 6

Letztere Variante scheint also soweit zu funktionieren, jedenfalls was die Verbindung zum Provider angeht, da der Zugriff ja vom Server abgelehnt wird. Daraus schließe ich, dass beim Provider etwas nicht stimmt. Was meinst du?

0
mastema666  12.11.2016, 17:09
@Niklas

Jo, wobei es mir irgendwie merkwürdig vorkommt, dass da was von "No such file or directory" kommt, da sollte ja gar keine Datei / Verzeichnis erwartet werden. Aber wenn du ja mit den gleichen Daten via phpMyAdmin rein kommst, kann eigtl nur was mit dem Server nicht stimmen. 

Bei den Zugangsdaten vom Hoster ist aber auch nicht z.B. ein Port für MySQL angegeben? Theoretisch könnten ja mehrere mysql-Server mit unterschiedlichen Ports dort laufen, auch wenn das schon eine ziemlich ungewöhnliche Konfiguration wäre. 

1
Niklas 
Fragesteller
 12.11.2016, 19:26
@mastema666

Hehe, ich Depp habe als Datenbanknamen versehentlich die Datenbankbeschreibung eingetragen... ^^

Das ist bei Froxlor (Webpanel für den Nitrado-Webspace) leider etwas verwirrend, da komme ich nicht das erste Mal durcheinander.

Falsch

define('DB_DATABASE', 'database');

Richtig:

define('DB_DATABASE', 'niXXXXXXX_1sql5');

Danke dir nochmals für deine erneute Hilfe! :)

0
mastema666  12.11.2016, 19:38
@Niklas

Ah, ok :) Da wär ich nu auch nicht drauf gekommen, ich dachte da steht nur "database" weil du den echten Namen nicht offen posten wolltest^^

1
Niklas 
Fragesteller
 12.11.2016, 19:43
@mastema666

Ja, im Beispiel war das hier auch so gedacht, zur Anonymisierung :)

Die echte Beschreibung ist aber auch nur ein Wort lang, von daher ist die Fehlerquelle (von der Logik her) die gleiche. :D

0
Niklas 
Fragesteller
 12.11.2016, 16:03

Bist du dir sicher, dass man dieses ganze "niXXXXXXX_XsqlX'@'vwebXX.nitrado.net" als MySQL Benutzername braucht?

Laut dem Nitrado-Forum sollen diese Angaben jedenfalls stimmen. 

niXXXXXXX_XsqlX ist der Name der Datenbank und vwebXX.nitrado.net ein Nitrado-Server, auf dem die Datenbank abgelegt ist.

0

Du sollst nicht mit mysql sondern mit mysqli verbinden...Google nach mysqli und bearbeite den Code wie vorgegeben


Niklas 
Fragesteller
 01.11.2016, 21:42

Hi,

danke dir für das Stichwort. Aber wieso klappt das denn mit dem gewöhnlichen MySQL nicht? Scheint doch eigentlich der Standard zu sein.

Grüße, Savix

0
threadi  01.11.2016, 22:36
@Niklas

MySQL als Datenbanksystem ist weit verbreitet, ja, nur von "Standard" noch weit entfernt. Die mysql-Funktionen in PHP für den Zugriff auf MySQL-Datenbanken sind keineswegs Standard, sie sind deprecated und mit PHP 7 bereits abgeschafft. Daher solltest Du mysqli oder auch pdo verwenden.

1
C0nfr0nt  01.11.2016, 21:45

Es steht doch im fehlercode? Es ist veraltet und unsicher deswegen moechte PHP nur noch per mysqli auf die mysql datenbank zugreifen

1

Wie schon die vorherigen Fragen das geschrieben haben solltest du MySQLi und nicht mehr MySQL verwenden. Das Hauptproblem bei dir ist jedoch, dass die Zugangsdaten nicht korrekt sind. Überprüfe deine Angaben, die du im Code hinterlegt hast, ob diese wirklich mit den Benutzerdaten übereinstimmen.