PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL Verbindungsfehler trotz richtiger Logindaten



FeierFreund
08.08.2006, 18:53
Hi...

Ich habe folgendes Problem.
Momentan habe ich einen Server laufen (SuSE 10.1) mit dem Apache 2.2.3, PHP 5.1.1 und MySQL 5.0.22 am Laufen. Da phpMyAdmin problemlos auf die Datenbanken zugreifen kann, nehme ich an das ich alles richtig konfiguriert habe. Versuche ich allerdings mit einem anderen PHP-Script (Gallerie oder Gästebuch), mit den selben LoginDaten wie ich sie in phpMyAdmin eingestellt habe, mich mit der Datenbank zu verbinden, schlägt dies mit einer simplen Fehlermeldung fehl. Hätte Hostname, Passwort oder Port falsch eingestellt. Aber die sind zu 100% richtig.:think:

An dem Server lokal kann ich mich ja ganz normal mit mysql verbinden. Kein Problem.

Wüsst ihr evtl. was ich falsch gemacht haben könnte ?
Bin schon halb am verzweifeln...?( ?(

Gruss, FeierFreund

Wolfgang
08.08.2006, 19:20
Hallo



An dem Server lokal kann ich mich ja ganz normal mit mysql verbinden. Kein Problem.

Wüsst ihr evtl. was ich falsch gemacht haben könnte ?

Nicht wirklich, solange du weder genaue Fehlermeldung noch Angaben zu deinem PHP-Script machst.
Der Fehler liegt sicher an deinem Script.

Gruß Wolfgang

FeierFreund
08.08.2006, 19:38
Nur eben komisch das garkein PHP-Script die Verbindung herstellen kann.... habe jetzt schon drei verschiedene getestet. Und das alle irgendwo den selben Fehler haben wage ich zu bezweifeln.
Hier habe ich mal die log drangehängt.
Hoffe das ist die die du/ihr wolltet ;)



060806 21:36:07 InnoDB: Started; log sequence number 0 43655
060806 21:36:07 [Note] /usr/local/lamp/mysql5/libexec/mysqld: ready for connections.
Version: '5.0.22-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution

Status information:

Current dir: /usr/local/lamp/mysql5/var/
Running threads: 0 Stack size: 196608
Current locks:
lock: 0x8a2a1c0:

lock: 0x8a28388:

lock: 0x8a26650:

lock: 0x8a24a10:

lock: 0x8a23218:

lock: 0x8a20740:

lock: 0x8a1a438:

lock: 0x8a17f40:

lock: 0x8a162e0:

lock: 0x8a14000:

lock: 0x8a089f8:

lock: 0x89e0bc8:

lock: 0x89db978:

lock: 0x89d72c8:

lock: 0x89c9fa0:

lock: 0x89c7300:

lock: 0x89c26d0:


Key caches:
default
Buffer_size: 16777216
Block_size: 1024
Division_limit: 100
Age_limit: 300
blocks used: 4
not flushed: 0
w_requests: 4
writes: 4
r_requests: 29
reads: 4


handler status:
read_key: 7
read_next: 29
read_rnd 7
read_first: 20
write: 2131
delete 0
update: 1

Table status:
Opened tables: 22
Open tables: 17
Open files: 36
Open streams: 0

Alarm status:
Active alarms: 0
Max used alarms: 2
Next alarm time: 0



Fehler? Nicht wirklich oder?

theton
08.08.2006, 20:15
Und was genau geben die PHP-Skripte fuer einen Fehler aus und wie sehen die Skripte aus? Mal einfach ein minimales Test-Skript gemacht?

FeierFreund
08.08.2006, 20:23
Ja gut, die Scripte geben einfach eine programmierte Fehlermeldung aus das sie sich nicht mit der Datenbank aufgrund falscher Logindaten verbinden können. Also keine direkte von PHP generierte Fehlermeldung.

Testscript ?
Hm, das problem ist das ich in Sachen PHP- und SQL-Programmierung (noch) keine Ahnung habe. Habe mir halt so ein GallerieScript runtergeladen und wollte das zum Laufen bringen.

Das ganze hatte ja auch mal vor einiger Zeit ohne Probleme funktioniert. Von der Konfiguration her habe ich auch nicht geändert gehabt. Deswegen wundert mich ja das ganze etwas.

Wieso komme ich überhaupt mit phpMyAdmin in die Datenbanken rein und nicht mit meinen Scripten?

Komisch das ganze.

Speichert PHP irgendwo auf dem System Logfiles wo ich mal reinschauen könnte ?

grey
08.08.2006, 21:11
Öffne einmal deine php.ini und such dir diese Section:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; error_reporting is a bit-field. Or each number up to get desired error
; reporting level
; E_ALL - All errors and warnings
; E_ERROR - fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice messageHier kannst du die Fehlerbehandlung von PHP konfigurieren. Weitere interessante Daten findest du in den access- und eror-Logfiles von mysql und apache [apache2].

Eine Möglichkeit, die ich gerne in solchen Fällen nutze ist entweder tail oder less im tail-Mode (wobei less, IMHO, dabei vorzuziehen wäre). So hast du die Möglichkeit, Live mitzuverfolgen, was wärend der Abarbeitung deines Scriptes auf Server-Seite geschieht.
Vielleicht hilft das ja den Fehlern auf die Spur zu kommen.

matland
09.08.2006, 08:14
haste schon versucht eine neue Datenbank anzulegen inkl. eigenen Benutzer?

lordlamer
09.08.2006, 08:31
use mysql;
select * from user;

mit anderen worten: schau dir mal die rechte an die eingestellt sind in mysql!

und was stellst du als host in deinen scripten ein?

mfg frank

FeierFreund
09.08.2006, 17:32
Also ich habe in der Tabelle users zwei mal root drinstehen. Bei beiden sind die Berechtigungen für alles auf YES gesetzt. ssl_cipher, x509_issuer, x509_subject stehen jeweils auf [BLOB -0 Bytes].
max_questions = 0
max_updates = 0
max_connections = 0
max_user_connections = 0

Die Angabe 0 bedeutet ja unendlich soweit mir das bekannt ist....
Und wie gesagt, haben den benutzer root zwei mal drin. Einmal in Verbindung mit Hostname = localhost und Hostname = fileserver

theton
10.08.2006, 03:17
Damit kann sich root also auch nur ueber diese beiden Adressen einloggen. Du muesstest also in deinen Skripten folgende Verbindungsdaten nutzen:

Hostname: localhost
User: root
Passwort: <dein-root-passwort>

Tun dies deine Skripte? Und sonst bau dir einfach ein kleines Testskript, das die ueblichen Fehler von PHP auswirft und poste diese hier.
Evtl. auch einfach mal einen neuen User anlegen:

1. mysql -u root -p
2. im MySQL-Client dann:

grant all privileges on *.* to 'username_hier_rein'@'%' identified by 'passwort_hier_rein';
flush privileges;
\q

Mit diesem User solltest du dann von jedem beliebigen Rechner aus auf die Datenbanken zugreifen koennen.

koty
04.01.2007, 13:47
Hi ho,

ich hatte auch das Problem!

Bin von einem Server auf einen neuen umgezogen. Durch den Umzug konnte ich auf dem neuen Server die neusten Dienste installieren:
apache 2.2
php 5.1
mysql 5.0

Aber nun gingen meine ganzen Scripte nicht.
Als root konnte ich mich in phpMyAdmin und von der console aus einlogen!
Als user konnte ich mich per phpMyAdmin und von der console aus einlogen!
Aber ein login per php-script zur Datenbank scheiterte!!!

Es kamm immer die Meldung:

PHP Warning: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Access denied for user 'user'@'localhost' (using password: NO) in /home/user/public_html/test_db.php on line 9


Habe dies so gelöst:

In der Datei /etc/php.ini den Eintrag

sql.safe_mode On
geändert zu
sql.safe_mode Off

und apache reload!

Das hat das Problem bei mir gelöst!

Da ich mir aber nicht ganz sicher war, was diese Einstellung macht, und mein Apache mit vhost und mehreren domains arbeitet, habe ich den Eintrag wieder rückgängig gemacht und nur für die domain (vhost) eingetragen die auch eine mysql verbindung brauchen!

/etc/httpd/vhost/user.conf

und diesen Eintrag eingefügt:

php_admin_value sql.safe_mode Off

in die Sektion
<VirtualHost *:80>


Und schon kann ich wieder mysql verbindungen als User per php-script aufbauen.

Thialfi
23.02.2007, 11:32
koty, vielen Dank, hatte das gleiche Problem und schon ewig nach ner Lösung gesucht, hab auch den safe_mode raus und es funktioniert...

Danke nochmal :)