16568
Goto Top

Zugriff auf MySQL von PHP ohne Kennwort oder Passwort

Irgendwo habe ich das schon mal gelesen...

Da ich gerade eine Testumgebung baue, in der der Zugriff auf MySQL erforderlich ist, ich aber nicht ständig Kennwörter jonglieren will, erinnerte ich mich an die Möglichkeit, das Ganze auch ohne zu realisieren.

Leider habe ich das irgendwo mal gemarkert, aber finde es nicht mehr.

root-Zugriff ist selbstverständlich verfügbar.

Ich glaube, das war was mit einer .cnf-Datei, aber egal wie sehr ich google, ich finde anscheinend nicht den richtigen Suchstring face-sad


Danke

Lonesome Walker

Content-Key: 175606

Url: https://administrator.de/contentid/175606

Printed on: April 18, 2024 at 18:04 o'clock

Member: dog
dog Nov 01, 2011 at 15:15:14 (UTC)
Goto Top
Was willst du jetzt?

Einen MySQL-Benutzer ohne Passwort anlegen?
CREATE USER 'hans'@'localhost'  

In PHP das Standard-Passwort vorgeben?
http://www.php.net/manual/de/mysql.configuration.php

Im C-Client das Standard-Passwort vorgeben?
[client]
user=hans
password=bernd
Mitglied: 16568
16568 Nov 01, 2011 at 15:26:14 (UTC)
Goto Top
Weder noch.

Es gibt die Möglichkeit, die MySQL-Zugangsdaten in einer Config abzulegen, die nicht im WWW-Verzeichnis liegt, und über die man auch einfach so nicht stolpern kann.
Das Standard-Pwd in PHP läßt sich auch auslesen, ergo suche ich das auch nicht...


Lonesome Walker
Member: dog
dog Nov 01, 2011 at 15:29:53 (UTC)
Goto Top
Das letzte Schnipsel ist der entsprechende Eintrag in der /etc/my.cnf Datei.
Auslesen kann das aber immer noch jeder.
Mitglied: 16568
16568 Nov 01, 2011 at 16:39:52 (UTC)
Goto Top
Zitat von @dog:
Auslesen kann das aber immer noch jeder.
Nö, nur der, der Zugriff auf /etc hat.
Den Bereich habe ich auch schon gefunden, da hat es auch klick gemacht, und deswegen ist mir das auch wieder eingefallen (Thema .cnf im Eingangsthread)

Aber wie connecte ich dann von PHP auf die MySQL-Datenbank?


Lonesome Walker
Member: dog
dog Nov 01, 2011 at 19:33:23 (UTC)
Goto Top
Ich würde sagen gar nicht, weil PHP dann seine eigenen Default-Werte einsetzt, wenn du das Feld leer lässt.

static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
{
[...]

                if (!passwd) {
                        passwd = MySG(default_password); //holt mysql.default_password aus php.ini
                        passwd_len = passwd? strlen(passwd):0;
                }
Mitglied: 16568
16568 Nov 01, 2011 at 19:43:30 (UTC)
Goto Top
Doch, es gibt die Möglichkeit, ich habe sie nur noch nicht gefunden :-P

Falls ich aber fündig werde, Antwort hier im Thread face-smile


Lonesome Walker
Mitglied: 16568
16568 Apr 26, 2012 at 20:01:53 (UTC)
Goto Top
Tja, das mit .cnf war schon der richtige Weg face-smile
Man braucht nur im Home-Verzeichnis des jeweiligen Users eine .my.cnf anzulegen, und da drin steht dann:

[client]
user=username
password=password
socket=/var/lib/mysql.sock

(oder so ähnlich :-P)
Wichtig ist jedoch, daß das jeweilige Home-Verzeichnis lesegeschützt vor den anderen Usern ist, läßt sich bei Shared Hosting im Eigenbau prima realisieren, und wenn PHP als CGI läuft, dann klappts auch mit den kennwortlosen Verbinden face-smile


Lonesome Walker