Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.
Was ist an diesem PHP/MySQL-Script falsch?
<html>
<head>
<title>Datenbank erstellen</title>
</head>
<body>
<?php
$benutzer="tomy";
$passwort="***";
$dbname="Squasch";
$link=mysql_connect("localhost", $benutzer, $passwort);
$sql="CREAT DATABASE ".$dbname;
mysql($sql,$link);
if($test=mysql_error($link))
{echo $test,"<br>";}
else
{echo "Die Datenbank wurde erstellt.<br>";}
?>
</body></html>
Mir werden immer mehrere Fehler ausgegeben wenn ich dieses Script ausführe. Die Fehler beziehen sich darauf, dass er keine Verbindung aufnehmen kann.
Natührlich sind alle Daten die sich auf MySQL beziehen korrekt. MySQL läuft auf dem Rechner auf dem auch das Script ausgeführt wurde.
Das sind die Fehler:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'tomy'@'localhost' (using password: YES) in C:\ServerV\squasch.php on line 12
Warning: mysql() [function.mysql]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\ServerV\squasch.php on line 15
Warning: mysql() [function.mysql]: A link to the server could not be established in C:\ServerV\squasch.php on line 15
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\ServerV\squasch.php on line 17
CREATE hatte ich wirklich falsch geschrieben, der Fehler bleibt aber.
6 Antworten
- vor 1 JahrzehntBeste Antwort
Dein MySQL sagt dir doch sehr genau wo der Fehler liegt :o)
Access denied.. bedeutet einfach, dass der von dir angegeben User nicht das Recht hat auf dem Datenbankserver eine Datenbank anzulegen.
Die Fehler die danach kommen erscheinen nur weil der erste Zugriff, also das Erzeugen der DB fehlschlägt und die in squash.php stehenden Anweisungen sicherlich das existieren der DB voraussetzen.
Du solltest also dringend prüfen ob der von dir angegebene User überhaupt über genügend Berechtigungen verfügt.
Hierbei musst du darauf achten, dass MySQL zwischen lokalem und entferntem Zugriff unterscheiden kann und das du dem User GRANT ALL auf den Server geben musst.
Ich würde niemals eine DB zur Laufzeit anlegen, da der User der das kann eben GRANT ALL auf dem Server haben muß. So ein mächtiger User hat in einem Skript nichts zu suchen.
Die Zuangsdaten gehören in ein extra Include das mit ein paar Kopfzeilen zur Sicherheit ausgestattet ist..
Aber das nur am Rande..
Grundsätzlich hast du schlichtweg ein Berechtigungsproblem.
Siehe dazu auch die MySQL Doku..
Schön prüfen bzw. einrichten kannst du das, wenn du nicht den MySQL admin nutzen willst, mit einem Tool wie phpMyAdmin.
Viel Erfolg,
- Anonymvor 1 Jahrzehnt
Spontan würde ich CREATE schreiben, unabhängig von den ganzen Einstellungen.
Log dich doch mal über die DB Konsole ein, ob die Parameter auch stimmen. Ansonsten den SQL Befehl richtig schreiben.
Kannst du dich als User 'tomy' mit
mysql -u tomy -p
Passwort YES einloggen oder nicht?
- Stephan WLv 5vor 1 Jahrzehnt
Es wäre einfacher, wenn du die genaue Fehlermeldung auch hingeschrieben hättest. So kann man nur vermuten:
* läuft auf localhost ein MySQL-Server?
* benutzt dieser den Standardport?
* stimmen Username und Passwort?
Du solltest erst mal überprüfen, ob $link korrekt gesetzt wird, oder ob es hier schon einen Fehler gibt (sprich $link nach dem Aufruf von mysql_connect nicht definiert ist) und ggfs. die Fehlermeldung von mysql ausgeben (mysql_error() ).
Quelle(n): http://de.php.net/ - CorryLv 6vor 1 Jahrzehnt
Schreibfehler:
Wie wäre es mit CREATE DATABASE???
Achso - der Fehler bleibt, was steht denn in den Bezeichneten Zeilen?
squasch.php on line 12,15 und 17?
- Wie finden Sie die Antworten? Melden Sie sich an, um über die Antwort abzustimmen.
- Frank BLv 6vor 1 Jahrzehnt
Abhängig von den Versionen von MySQL und PHP gibt es da ab und zu mal Probleme mit dem Passwort, welches ab MySQL5, als MD5 verschlüsselt erwartet wird.
Versuche mal, auf die alte Authentifizierung zu wechseln:
http://dev.mysql.com/doc/refman/5.0/en/old-client....
Noch etwas zu Anlage der Datenbank:
- Anonymvor 1 Jahrzehnt
Läuft auf dem Rechner, auf dem das Script ausgeführt wird ein mYSQL Server?
Gibt es auf diesem mYSQL Server einen Benutzer tomy ?
Stimmt das Passwort für diesen Benutzer?
Wichtig: localhost ist der Rechner auf dem dein Script abgearbeitet wird, als auf dem auch der PHP-Interpreter läuft.
Wichtig ist auch, dass der account des PHP-Interpreters die Zugangsberechtigung zum mYSQL-Server hat.
Nachsatz:
Tausche die " gegen '
Hier ein Beispiel aus SelfPHP:
/* Datenbankserver - In der Regel die IP */
$db_server = 'localhost';
/* Datenbankname */
$db_name = 'selfphp';
/* Datenbankuser */
$db_user = 'root';
/* Datenbankpasswort */
$db_passwort = 'mega';
/* Erstellt Connect zu Datenbank her */
$db = @ mysql_connect ( $db_server, $db_user, $db_passwort )
or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );