PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ja ich weiß. Schon wieder Apache & MySQL & PHPAdmin



pixel
17.10.03, 19:39
Hi@all,

ich möchte meinen Server mit den drei o.g. Komponenten ausstatten. Dazu habe ich von SuSE (9.0) den Apache2 installiert und eingerichtet. Dies funktioniert bereits auch. Der Webserver ist vom Client aus erreichbar. Als nächsten habe ich MySQL installiert. Hierzu muß ich allerding sagen das ich in der config lediglich die Pfade für die Datenablage geändert. Ich denke mal daß das nicht alles sein kann. Ich habe hier schon einge Threads durchgestöbert und bin auf zwei Punkte gestoßen die ich wohl noch machen muß:

1) man muss ein root-pw fuer mysql setzen
2) dem phpadmin muss man in der config.php die connect-parameter fuer mysql mitteilen

Kann mir jemand kurz sagen wie das machen muß? Ich habe folgende Pakete installiert:

apache2
apache2-prefork
apache2-example-pages
mysql
pache2-mod_php4
phpMyAdmin
apache2-mod_pe

Gruß Pixel

downtown
18.10.03, 10:38
am einfachsten gehts wahrscheinlich so:

öffne die config.inc.php von phpmyadmin in einem texteditor. sie sollte irgendwo im webserver-verzeichnis und dann im root-verzeichnis des phpmyadmin zu finden sein.
dort veränderst du folgende variablen:
$cfg['PmaAbsoluteUri'] = "die absolute url inkl. host zu phpmyadmin";
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

der rest sollte stimmen. einfach darauf achten, dass nicht sämtliche leute auf phpmyadmin zugreifen können (sprich .htaccess einsetzen).


jetzt phpmyadmin im browser aufrufen und erstmal das root-passwort ändern. das kannst du irgendwo unter benutzerverwaltung oder so ähnlich.
dann mysql neu starten. jetzt musst du nochmal die config von phpmyadmin verändern und dort das root-passwort hier rein schreiben:
$cfg['Servers'][$i]['password'] = '';

fertig. jetzt sollte es klappen ;)

pixel
18.10.03, 13:46
Hi@all,

jetzt habe ich noch das Problem das phpmyadmin den Datenbankserver nicht findet. Erst ein paar Worte zur Konfiguration. Apache2 ist so konfiguriert das er seine Daten unter /data/www und nicht wie Standardmäßig installiert unter /srv/www findet. Dies funktioniert auch soweit. Der Webserver ist erreichbar. MySQL ist ebenfalls so konfiguriert das die Daten unter /data/mysql und nicht wie Standardmäßig vorgegeben unter /var/lib/mysql ablegt. Die funktioniert ebenfalls. Die Datenbank ist ebenfalls erreichbar und auch ein 'mysql' >status zeigt dies so an. phpadmin scheint jedoch die Datenbank noch unter dem Standardpfad zu suchen. Wenn ich phpmyadmin via Webbrowser starte komme ich zwar auf die Oberfläche ich erhalte die Fehlermeldung:

MySQL meldet:
#2002 - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

die muß an der Konfiguration von phpadmin liegen da im MySQL-Log keinerlei fehler ausgegeben wird. Also wa es für mich naheliegend das diese Einstellunge auch in der config von phpadmin zu suchen ist. Hier habe ich jedoch mehrere Zeilen gefunden welche es sein könnten. Kann mir jemand sagen welche die richtige ist, oder sind alle auf den Pfad zu setzen?

Hier die entsprechenden Auszüge aus der config.inc.php:

* Server(s) configuration
*/
$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1]. Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.
$i++;
$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address
$cfg['Servers'][$i]['port'] = ''; // MySQL port - leave blank for default port
$cfg['Servers'][$i]['socket'] = ''; // Path to the socket - leave blank for default socket
[...Schnipp...]
$i++;
$cfg['Servers'][$i]['host'] = '';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
[...Schnipp...]
$cfg['Servers'][$i]['AllowDeny']['rules']
= array();

$i++;
$cfg['Servers'][$i]['host'] = '';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';

Also ich bin kein PHP-Experte aber für mich sehen die drei Zeilen absolut identisch aus:confused:
Ich babe einfach mal bei allen drei Zeilen wie folgt ergänzt:

$cfg['Servers'][$i]['socket'] = '/data/mysql';

Was jedoch nichts an der Fehlermeldung geändert hat. Wo hat phpadmin den Pfad versteckt??

Gruß Pixel

zeeman
18.10.03, 16:28
Wenn ich das richtig verstehe läuft das alles auf einem rechner.
in zeile 68 dies hier einzutragen in der config müsste reichen:

$cfg['Servers'][$i]['host'] = 'localhost';

pixel
19.10.03, 13:03
Wenn ich das richtig verstehe läuft das alles auf einem rechner. richtig.

in zeile 68 dies hier einzutragen in der config müsste reichen:
$cfg['Servers'][$i]['host'] = 'localhost';habe ich gemacht, die Fehlermeldung ist jedoch die gleiche.

Jinto
19.10.03, 15:06
läuft mysql überhaupt?

Nachträgliche Änderung:
Du hast ja bereits geschrieben, dass die Datenbank erreichbar ist. Welche Änderungen hast du denn in der my.cnf durchgeführt?

Die socket Varibale hättest du nciht ändern müssen.

Stanislaus
19.10.03, 16:57
Original geschrieben von pixel
[...]MySQL ist ebenfalls so konfiguriert das die Daten unter /data/mysql und nicht wie Standardmäßig vorgegeben unter /var/lib/mysql ablegt. [...]
Legt MySQL beim Start denn die mysql.sock Datei dann auch unter /data/mysql/ an?


Original geschrieben von pixel
[...]Ich habe einfach mal bei allen drei Zeilen wie folgt ergänzt:
$cfg['Servers'][$i]['socket'] = '/data/mysql';
Die erste Zeile sollte reichen. Und versuch mal, den kompletten Socket d.h. nicht nur /data/mysql sondern /data/mysql/mysqld.sock einzutragen.

Bis neulich ...

edit: Guck mal in die my.conf:


[mysqld]
[...]
socket = /var/run/mysqld/mysqld.sock
[...]
datadir = /var/lib/mysql

pixel
19.10.03, 18:13
@Jinto

Welche Änderungen hast du denn in der my.cnf durchgeführt?
[client]
port = 3306
socket = /data/mysql/mysql.sock
[mysqld]
port = 3306
socket = /data/mysql/mysql.sock
datadir = /data/mysql/mysql

@Stanislaus

Legt MySQL beim Start denn die mysql.sock Datei dann auch unter /data/mysql/ an?
Ja, habe MySQL beendet, die Datei gelöscht und anschließend MySQL wieder gestertet. Die Datei wurde unter: /data/mysql/ angelegt.

Und versuch mal, den kompletten Socket d.h. nicht nur /data/mysql sondern /data/mysql/mysqld.sock einzutragen.
Habe ich gemacht.

[mysqld]
[...]
socket = /var/run/mysqld/mysqld.sock
[...]
datadir = /var/lib/mysql
Habe ich ebenfalls gemacht. Anschließend habe ich alle beteiligten (Apache2 MySQL) neu gestartet. Jedich zeigt der Aufruf von phpmyadmin noch immer die gleiche Fehlermeldung.

Hoffe es hat noch jemand eine Idee :rolleyes:

Gruß Pixel

Stanislaus
19.10.03, 21:39
hmm... vielleicht noch den Client Socket auf /data/mysql/ stellen:

[client]
#password = my_password
port = 3306
socket = /var/run/mysqld/mysqld.sock
Häng am besten mal Deine my.cnf an. Dann versuche ich mal mein Glück damit.

pixel
20.10.03, 20:06
Hier ist sie.

Jinto
20.10.03, 21:11
Hi Pixel

schau mal, das meldet den phpmyadmin script:
#2002 - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

und das steht in deiner Config:
socket = /data/mysql/mysql.sock

Eins von beiden musst du anpassen (entweder php config, oder die mysql config).

Stanislaus
20.10.03, 21:19
Juhten Abend.

Ich hab jetzt mal selber rumgefummelt und es funktioniert eigentlich absolut problemlos.
Ich habe keinen mysql socket oder sonstwas umgestellt. Nur das "data_dir" auf "/data/mysql/" geändert und den mysql Ordner aus /var/lib/mysql/ (der mit den Systemtabellen) eben nach "/data/mysql/" kopiert.
Bei Start hat mysql sich dann natürlich auf die Nase gelegt:

Fatal error: Can't open privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
Aborting
Also flott den besitzer von "/data/mysql/mysql/" auf "mysql" gesetzt und alles lief.

Pack Dir also nochmal die original Config. Datadir anpassen und gucken, daß die Verzeichnisrechte stimmen. Die Socketdinger brauchst Du nicht anfassen.

Viel Erfolg!

pixel
20.10.03, 21:41
Der Pfad /var/lib steht eben nicht in der config von phpadmin. Das war doch die Eingangsfrage. Datei anbei.

pixel
20.10.03, 21:55
Ich konnte das Problem zumindest eingrenzen. Ich denke ich muß in der php-config:

$cfg['Servers'][$i]['connect_type'] = 'tcp';
durch
$cfg['Servers'][$i]['connect_type'] = 'socket';
ersetzen da ja beides auf dem gleichen Server läuft. Wenn ich das mache erhalte ich eine andere Fehlermeldung:

#2002 - Can't connect to local MySQL server through socket '/data/mysql' (13)

Er scheint zumindest mal im richtigen Pfad zu suchen. Die Datei mysql.sock liegt aber definitiv in
/data/mysql

Gruß Pixel

pixel
20.10.03, 22:05
also. Änderung wie oben und die Zeile:

$cfg['Servers'][$i]['socket'] = '/data/mysql';
in
$cfg['Servers'][$i]['socket'] = '/data/mysql/mysql.sock';

ändern und der Kontakt ist hergestellt. Leider bekomme ich auf der Hauptseite schon die nächste rote Meldung:

Das $cfg['PmaAbsoluteUri']-Verzeichnis MUSS in Ihrer Konfigurationsdatei angegeben werden!

Ihre Konfigurationsdatei enthält Einstellungen (Benutzer "root" ohne Passwort), welche denen des MySQL-Stardardbenutzers entsprechen. Wird Ihr MySQL-Server mit diesen Einstellungen betrieben, so können Unbefugte leicht von außen auf ihn zugreifen. Sie sollten diese Sicherheitslücke unbedingt schließen!

Wobei der 2. Teil der Meldung klar ist. Ich muß noch ein Passwort definieren. Nur die 1. sagt mir nicht viel.

Gruß Pixel

Stanislaus
21.10.03, 08:12
Original geschrieben von pixel
Der Pfad /var/lib steht eben nicht in der config von phpadmin. Das war doch die Eingangsfrage. Datei anbei.
Ist ja auch gar nicht nötig.
Der nimmt doch den Standardsocket wenn nichts eingegeben wurde.
Deswegen sagte ich ja; einfach wieder die originale my.cnf NUR data_dir anpassen (somit bleibt der Socket ja Standard) und gut is.
Dann brauchst Du bei phpmyadmin auch keine Sockets o.ä. angeben. Nur den host, Benutzer und Passwort.

So denn ...

pixel
21.10.03, 14:43
danach geht es jetzt aber.

Stanislaus
21.10.03, 15:03
Natürlich kannst Du den Socket verändern. Der Nachtei ist allerdings der, daß Du nun für jedes MySQL nutzende Programm den Socket ändern musst.
Wenn Du den bei der Standardeinstellung lässt ist das nicht nötig und so wie ich Dich verstanden habe ging es Dir ja nur um das verschieben des "data_dir".

Aber wie auch immer, Hauptsache es funktioniert.

pixel
21.10.03, 15:12
d.h. ich kann in der jetzigen Konfiguration nicht vom Client aus auf MySQL zugreifen?

Stanislaus
21.10.03, 17:49
Original geschrieben von pixel
d.h. ich kann in der jetzigen Konfiguration nicht vom Client aus auf MySQL zugreifen?
Ich bin mir nicht ganz sicher, aber wenn es auf einmal nötig ist den Socket in der phpmyadmin config anzugeben wirst Du das für andere Programme auch nachträglich ändern müssen.
Wenn das natürlich alles über die client Einstellung in der my.cnf geregelt ist sollte es wiederrum nicht nötig sein den Socket überhaupt anzugeben.
Einfach mal ausprobieren.

Ich bin eigentlich eher der Typ, der nur die nötigsten Einstellungen verändert, was in Deinem Fall nur "data_dir" wäre. Den Socket abändern geht, ist aber für Deinen Zweck nicht nötig und zieht daher evtl. unnötige Mehrarbeit nach sich.

Hast Du den Socket denn jetzt in der my-cnf angegeben oder funktioniert es ohne?

Bis neulich ...

pixel
22.10.03, 12:32
Hi@all,

ich habe in der my.cnf nun folgende relevanten Einstellungen:

[client]
port = 3306
socket = /data/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port = 3306
socket = /data/mysql/mysql.sock
datadir = /data/mysql


was genau macht denn die Option 'socket' und warum gibt es sie sowohl in der Client- wie auch in der Server- Sektion?

Ich habe die Option verändert da ich wollte das MySQL all seine veränderlichen Daten in diesen Pfad schreibt.

Viel wichtiger für mich ist. Was ist der Unterschied ob ich in der php-config:
$cfg['Servers'][$i]['connect_type'] = 'socket';
anstatt:
$cfg['Servers'][$i]['connect_type'] = 'tcp';
einstelle. Ich habe gedacht das 'socket' benötigt wird wenn phpmyadmin und MySQL auf ein und der selben Maschiene liegen und 'tcp' wenn es unterschiedliche Rechner sind.

Gruß Pixel