Hallo,ich will mit einem PHP-Script auf

… meinem Linux-Server eine MySql-Datenbank erstellen, einen User für die Datenbank anlegen, und danach Daten in die Datenbank schreiben.
Ich stelle eine Verbindung mit Root und Passwort zum Server her. So weit hat es funktioniert keine Fehlermeldung!.
Create Database mit der vorhandenen Verbindungskennung. Keine Fehlermeldung, aber die Datenbank wurde nicht erstellt, denn ich kann sie über PLESK nicht sehen.
Da alles in einen Script laufen soll, kommt gleich danach der User. Keine Fehlermeldung, aber der User wurde nicht erstellt. Jetzt kommen die Daten in die Datenbank. Auch keine Fehlermeldung, und natürlich keine Daten, wo auch!
Da das Script so angelegt ist, dass bei einem Fehler die Ausführung abgebrochen wird, es aber keine Fehler gibt, läuft das Script durch ohne Fehler und ohne Ergebnis.
Woran kann das liegen? Der User ist Root, der muss doch alle Rechte haben.
Entwickelt habe ich das Script unter Windows xammp und es läuft ohne Probleme. Doch die Portierung auf den Linux-Server funktioniert nicht.

Hat da jemand eine zündende Idee, oder das Wissen?
Jede Idee ist gut!

MacFlie

Hallo,

Welcher Datenbanktyp wird denn beim anlegen genutzt. Läuft das ganze in einer Transaktion?
Ewas Quelltext wäre hilfreich.

Antwort:
Der DB-Server ist MySQl, die DB MyISAM.

$this->kennung = mysql_connect(„localhost“,„root“,„pass“) or die(mysql_errno($this->kennung);

$this->sql = „CREATE DATABASE IF NOT EXISTS „.$this->DB.““;
$db_res1 = mysql_query($this->sql,this->$kennung);

$this->sql = „CREATE USER '“.$this->User."’@’".$this->DB."’ IDENTIFIED BY „.$this->Code.“";
$db_res2 = mysql_query($this->sql,$this->kennung);

$db_res1 und $db_res2 werden zwischendurch ausgewertet ob true o. false und dann erfolgt Abbruch o. Weiter.
Danach kommen die Daten mit INSERT. Ist jetzt aber nicht so wichtig.

Wie gesagt, unter Windows Vista Business läuft alles ohne Probleme.

MacFlie

Ok, ich vermute mal, das die Default-Storage-Engine eine andere ist, möglicherweise sowas wie MEMORY?
Die kann man direkt beim anlegen für die laufende Session mit angeben:
SET storage_engine=MyISAM;

Wenn die Inserts gelaufen sind, können denn die Werte auch wieder mit Select abgerufen werden? Also direkt nach dem Insert?

Weiterer Ansatz wäre, explizit nach dem anlegen USE $this->DB zu setzen.

Da die Prüfung auf Fehler in deinem Codeschnippsel nicht dabei: Prüfst du auf Erfolg "if ($db_res1 ) " oder Fehler „if( ! $db_res1)“?
mysql_query liefert nicht für alle Abfragen TRUE
(siehe http://www.php.net/manual/de/function.mysql-query.php)

da wäre es schon hilfreich wenn du das script hier mal veröffentlichst.

Antwort:
Der DB-Server ist MySQl, die DB MyISAM.

$this->kennung = mysql_connect(„localhost“,„root“,„pass“) or die(mysql_errno($this->kennung);

$this->sql = „CREATE DATABASE IF NOT EXISTS „.$this->DB.““;
$db_res1 = mysql_query($this->sql,this->$kennung);

$this->sql = „CREATE USER '“.$this->User."’@’".$this->DB."’ IDENTIFIED BY „.$this->Code.“";
$db_res2 = mysql_query($this->sql,$this->kennung);

$db_res1 und $db_res2 werden zwischendurch ausgewertet ob true o. false und dann erfolgt Abbruch o. Weiter.
Danach kommen die Daten mit INSERT. Ist jetzt aber nicht so wichtig.

Wie gesagt, unter Windows Vista Business läuft alles ohne Probleme.

MacFlie

Hmm,

Dass kann viel bedeuten. Kannst du mal in die Server log Files (/var/log) schauen ob dort Fehler dokumentiert werden?

Unter plesk heißt der ist auch soweit ich weiß „admin“ und nicht mehr root

Lg Frank

Hallo,

ich hab mich mal mit PuTTy mit meinem Server verbunden und unter /var/lib/mysql etwas erstaunliches gesehen. Alle Datenbanken die ich zum Test angelegt habe, ob über PLESK oder PHP-Script sind dort vorhanden. Nur das ich die mit PHP-Script erstellten DB’s in PLESK nicht sehen kann. Warum?

MacFlie

Hallo,

Schon etwas her das ich mit plesk gearbeitet habe, soweit ich mich erinnern kann hat der User mit dem sich plesk auf die Datenbank verbindet nur zugriff auf bestimmte Datenbank vor allem nur Datenbanken die plesk kennt.

Installiere dir mal adminer oder phpmysql und log doch mal darüber mit deinen root Daten ein.

Lg Frank

Schau mal in dem Form wurde auch etwas über den „admin“ user von plesk mysql geschrieben.

http://www.rootforum.org/forum/viewtopic.php?f=103&t…

Lg Frank

Hallo,

wenn ich über PuTTy unter var/lib/mysql alle Datenbanken sehen kann, kann ich dann auch in einem Verzeichnis alle angelegten Datenbankbenutzer sehen?

MacFlie

Die Antwort gab es oben bereits???

Moin!

Gute Frage. Möglicher Weise ist das ein Versions-Konflikt. Ich habe keine Ahnung, welche Versionen von PHP-, Apache- und (My)SQL-Server Dein XAMPP benutzt und welche Deine Linux-Distro.

Wenn Du das erstmal auflösen kannst, ob das evtl. daran liegt (ggf. updaten), kann man mal weitersehen.

Gruß
Hringriin

Hallo,
du musst deinen Code in try {} catch(){} haben, damit die Fehler/Exception sehen kannst

LG

Die User Daten sind in einer Tabelle in der Datenbank mysql abgelegt.

Folge am besten mal dem Ratschlag im Forum und installiere dir ein unabhängiges phpmysql, damit hast du auch vollen Zugriff auf mysql.

Lg Frank

Hallo, das müsste man sich direkt auf dem Server ansehen.
Normalerweise müßte die DB angelegt werden können.
Falls ich mir das ansehen soll bitte eine PN senden.

Beste Grüße

Friedrich Hofmann

Hallo,

die Datenbanken wurden tatsächlich alle angelegt. Ich hab sie unter var/lib/mysql gefunden. Doch meine Frage ist jetzt: da ich zu jeder Datenbank einen User angelegt habe (mit eigenem Passwort) weiß ich jetzt nicht ob diese User wirklich vorhanden sind. Soweit ich weiß sind die User in der Datenbank mysql abgelegt, doch wie komme ich da ran?

MacFlie

Hallo,

wenn es auf xampp läuft, würde ich wie folgt vorgehen:

In jeder sinnvollen Zeile oder vor und nach jeder Eingabe eine Ausgabe erzeugen mit var_dump($var);

Das bringt mich oft auf den Weg woran es liegt, wenn etwas nicht funktioniert.

Was auch sein könnte, (aber mit Plesk kenne ich mich nicht aus) dass Du ungenügende Zugriffsrechte hast…

hi,

sorry, kann dir im moment leider nicht weiterhelfen.

cu
harald
*****************

Ohne das Scrit zu sehen etwas schwer:smile:
Gruß
uwe