MySQL-Connect via PHP schlägt fehl - Access denied!

IceDragon

Registered User
Hi,

ich hoffe ich schreibe das hier ins richtige Board, weiß nämlich nicht wo das am besten einzuordnen ist. Ich habe folgendes Problem, ich kann mit einem PHP-Skript von mir nicht auf die Datenbank zugreifen, obwohl der User und die Datenbank via Plesk angelegt wurden . Ich habe später dem User alle Rechte noch via PHPMyAdminglobal zugeteilt, es geht aber immer noch nicht. Folgender Fehler wird angezeigt:
Code:
Warning: mysql_pconnect(): Access denied for user 'whmb_user3'@'localhost' (using password: YES) in C:\Inetpub\vhosts\*****\httpdocs\inc\mysql_connect.inc.php on line 12
hier das Skript
Code:
<?php
/* Hier muessen die Datenbank-Server-Daten eingetragen werden! */
$db_server = "localhost";			/* Server, meistens localhost */
$db_user   = "whmb_user3";          /* Benutzername fuer Datenbank */
$db_passwd = "*****";          /* Password fuer Datenbank */
$db_name   = "whmb_user3_zurpostmain";          /* Name der Datenbank */


//neuer db_server: localhost
/* Verbindung zum Datenbank-Server */
$db = mysql_pconnect($db_server,$db_user,$db_passwd) or error(__LINE__,__FILE__,"Verbindung zur Datenbank fehlgeschlagen: $db_user@$db_server");

/* Waehle Datenbank */
mysql_select_db($db_name,$db) or error(__LINE__,__FILE__,"Konnte Datenbank nicht ausw&auml;hlen: ".$db_name);
?>
Ich habe mich schon totgesucht und einiges ausprobiert, aber nix funktioniert. Habe auch schon das Passwort des Users neu gesetzt, bzw. den User ohne Passwort hinterlegt und dann ohne Passwort connected, hilft alles nix. Der Plesk-Login funktioniert aber einwandfrei und der PHPMyAdmin-Login geht auch ohne Probleme.
Code:
Verbunden mit MySQL 4.1.12-nt auf localhost:8306 als admin@localhost

Ich weiß langsam echt nimmer weiter, habe folgende Umgebung auf meinem RootDS:
MySQL 4.1.12-nt
MySQL Client API version 3.23.49
phpMyAdmin 2.6.0-pl3
PHP Version 4.3.10
Plesk 7.5.6
Win2003 Standard
IIS6

Vielleicht kann mir ja jemand weiterhelfen, dafür wäre ich sehr dankbar, denn was hilft mir ein Webserver mit PHP & MySQL, wenn ich keine Skripte mit Datenbankanbindung ausführen kann?! :(
 
Hallo!

Im Plesk scheinst Du Dich ja mit "admin" einzuloggen - das ist ein anderer User als "whmb_user3".

Wenn die Rechte von "whmb_user3" stimmen, gibt folgende Hinweise:

1. Hast Du nach dem Setzen der Rechte die Benutzertabellen neu geladen (geht z. B. im phpMyAdmin auf der Startseite)? Änderungen der mySQL-Rechte-/Benutzerstruktur werden nur wirksam, wenn die Benutzertabellen neu geladen bzw. die DB neu gestartet wird. s. mySQL-Manual: 5.8.7. When Privilege Changes Take Effect
2. Versuch mal statt "localhost" die Loop-Back-IP "127.0.0.1".

Viel Erfolg!
 
Last edited by a moderator:
Hi,

danke für die fixe Antwort!;)

zu 1.) Ja habe ich gemacht, bewirkt aber keine Änderung
zu 2.) Auch mit der 127.0.0.1 im PHP-Skript tritt genau das gleiche Problem weiterhin auf:
Code:
Warning: mysql_pconnect(): Access denied for user 'whmb_user3'@'localhost' (using password: YES) in C:\Inetpub\vhosts\*****\httpdocs\inc\mysql_connect.inc.php on line 12
Habe dabei auch den MySQL-User im PHPMyAdmin nochmals kopiert und als Host die 127.0.0.1 angegeben, hat aber auch nix geholfen.
:(
 
Was Neues!:rolleyes:

Habe bei SWSoft was gelesen das es zwei MySQL-Installationen gibt und die auch gefunden:
C:\SWSoft\Plesk\MySQL -> my.ini -> port=8306
C:\SWSoft\Plesk\Databases\MySQL -> my.ini -> port=3306

Plesk 7.5.x involves tow kind of MySQL servers:

MySQL server as storage for Plesk databases. It's located in %plesk_dir%MySQL. Uses port 8306 for connections. It can be updated only to the latest version in 4.x.x series of MySQL.
To update Plesk's MySQL follow these steps:

download the latest stable version of MySQL 4.x.x series at http://dev.mysql.com/downloads
stop 'Plesk SQL Server' service.
rename or backup folder %plesk_dir%mysql.
create folder %plesk_dir%mysql and unpack downaloded mysql pack to this folder.
delete folder %plesk_dir%mysql\data.
copy folder data from original (backed up) mysql to %plesk_dir%mysql.
restart 'Plesk SQL Server' service.

MySQL server as storage for client's databases. It's located in %plesk_dir%databases\MySQL. Uses port 3306 for connections. It can be updated to any latest stable version of MySQL.
To update client's MySQL follow these steps:

download the latest stable version of MySQL at http://dev.mysql.com/downloads
stop 'MySQL Server' service.
rename or backup folder %plesk_dir%databases\mysql.
create folder %plesk_dir%databases\mysql and unpack downaloded mysql pack to this folder.
delete folder %plesk_dir%databases\mysql\data.
copy folder data from original (backed up) mysql to %plesk_dir%databases\mysql.
restart 'MySQL Server' service.

Was ist jetzt eigentlich genau der Unterschied der beiden Datenbanken??? Eine ist angeblich für Plesk (port8306) und eine für die Clients, aber auch die Datebanken die ich unter den Domains anlege kommen anscheinend in die erste Datenbank. Langsam bin ich ehrlich verwirrt!:confused: Kann es sein das PHP dann nicht weiß auf welche zugegriffen werden soll und daher mit dem User auf die falsche DB zugreift???

Wenn ich mich egal in welche der beiden Datenbanken einloggen will, also nur mit dem Kommando mysql im bin-Verzeichnis eingebe kommt immer folgendes:
Code:
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
 
Ich bin mir auch nicht ganz sicher, aber ich glaub ees gibt zwei seperate Datenbanken. Eine für Plesk und die zeite kannst du selbst anlegen für jede Domain.
Kann sein, dass ich jetzt Mist erzähle, aber mach mal das:
Log dich in Plesk ein, links in der Navi klickst du auf "Domain", wählst deine Domain aus und klickst auf "Datenbanken".
Ist da überhaupt schon eine angelegt? Wenn nicht mach das erstmal. Auf die Plesk Datenbank kann man nämlich meines Wissens nur über die Shell zugreifen, Scripte haben also keine Berechtigung, deswegen musst du da eine seperate anlegen und die hat dann auch einen eigenen Nutzer mit anderen Zugangsdaten.
 
Die DB wurde ja über Plesk von mir angelegt, funzt aber ned. Egal ob ich mich im Plesk über den Admin-Login oder über den Domainuser auf der Datebank via PHPMyAdmin anmelde, er geht immer auf den Port 8306 und dort ist die Datenbank ja vorhanden, aber über PHP erreich ich diese eben nicht!:(
 
Also eigentlich erreicht er sie ja schon, nur bekommt er halt keinen Zugriff. Du musstest ja dann für diese in Plesk erstellte Datenbank auch einen neuen Datenbankbenutzer erstellen. Bist du sicher, dass du die Daten dieses Benutzers korrekt ins Script übertragen hast? Versuch mal, Benutzernamen und Passwort zu ändern, dieses Problem hatte ich auch schonmal. Nachdem ich es geändert habe, gings plötzlich.
 
Ich glaub ich kriegs nicht mehr!:eek:

Ich habe jetzt mal in der php.ini folgenden Port hinterlegt, da mir das mit den zwei MySQL-Installationen etwas spanisch vor kam:
Code:
mysql.default_port = 8306
Und siehe da, er kann sich auf einmal connecten. Eigentlich ein Witz, dass man die php.ini auch noch editieren muss, damit man mal Zugriff auf seine im Plesk erstellten Datenbanken bekommt, da muss SWSoft noch mal nacharbeiten!:rolleyes: :mad:

Ich weiß jetzt nur immer noch nicht, was die beiden Installationen genau für einen Sinn haben und ob ich da was falsch mache, wenn ich mich auf die DB mit dem Port 8306 schalte, funzen tuts auf jeden Fall!:D Trotzdem vielen Dank für Eure Hilfe, vielleicht hilfts ja dem einen oder andern hier noch mal, der auch Plesk hat! ;) :cool:
 
IceDragon said:
Ich habe jetzt mal in der php.ini folgenden Port hinterlegt,
Man muß nicht direkt die php.ini editieren. Eine andere alternative ist den Connect-String entsprechend zu ändern:
mysql_pconnect('localhost:8306', ...

huschi.
 
Ok wenn das auch möglich ist, aber so muss ich erstmal nix in meinen Skripts von den veschiedenen Seiten ändern. Trotzdem danke für den Tipp! ;) Kann mir eigentlich jemand noch die Sache mit den zwei MySQL-Installationen unter Plesk erklären, wenn effektiv eh dann nur die eine genutzt wird?:confused:
 
IceDragon said:
Kann mir eigentlich jemand noch die Sache mit den zwei MySQL-Installationen unter Plesk erklären
Es werden ja beide genutzt. Die eine (3306) ist die Plesk-Interne-Datenbank die andere (8306) die Benutzer-Datenbank.

Zum 'Warum' kann ich nur raten. (Ich kann also auch gewaltig falsch liegen.)
a) Da es ein Windows-Server ist, gingen die Entwickler evtl. davon aus, daß Grundsätzlich ein MS-SQL installiert ist und von den meisten Kunden auch genutzt wird. Dein Vermieter (oder wer auch immer) wollte sich evtl. die Lizenz sparen und hat statt dessen ein MySQL installiert. Aber aufgrund der Programmstruktur von "Plesk für Windows" läßt sich nur ein weiterer externer SQL-Server integrieren.

b) Anderer Erklärungsmöglichkeit: Das eine ist ein MySQL 4 (für Plesk) und der andere ist ein MySQL 5 (für die Webuser).

huschi.
 
Danke Dir nochmals für Deine Erklärungen!;)

Ein Problem habe ich aber noch, da ich große Tabellen importieren muss geht das über PHPMyAdmin nicht so einfach, ohne das ich in der php.ini die max_execution_time und upload_max_filesize drastisch nach oben setze. Leider kann ich mich aber über die Kommandozeile nicht in die MySQL-Datenbank einloggen, egal was ich für einen User und Passwort benutze, es geht nicht!
Code:
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password:
YES)
Über Plesk komm ich aber über die angelegten User ohne Probleme rein! Was mache ich falsch?:confused:
 
Hab grad die Lösung selber gefunden, vielleichts hilfts ja Jemanden mal weiter!;) Man muss beim Aufruf auch noch den Port angeben, egal ob man jetzt schon im richtigen der beiden MySQL-Installationspfad steht, oder im anderen!:rolleyes:
Code:
mysql -uadmin -p -P8306
 
Back
Top