Leider nich "øxygen". Aber ich habe die Lösung schon gefunden. mysql_fix_privilege_tables ordnet zwar die Rechte bzw fixt diese, aber bei mir (wie auch bei anderen) wurden die Rechte nicht sauber verteilt. Meist konnte dann ein User alle DBs sehen und einiges mehr.
Mein Fehler ist damit nicht zu vergleichen. Confixx legt eine DB an, aber gibt diese nicht an den User weiter. Aber hier die Lösung die ich gefunden habe. Habe es getestet und kann definitiv sagen es funktioniert sauber. Der Fehler mit confixx und MySQL4 ist übrigens weitreichend bekannt.
Hier die Lösung:
MySQL4-Unterstützung für Confixx 2.
confixx/html/user/db_mysql_anlegen.php ersetzen durch: (bitte vorher sichern!!!):
<?php
####### Confixx(R) 2.0 Professional
### Copyright Yippi-Yeah! E-Business GmbH 2001-2003
#######
http://www.confixx.de -
info@yippi-yeah.com
include("auth.php");
db_connect($db_host, $db_user, $db_pass);
$id = db_query("select maxmysql, anbieter from kunden where kunde = '$PHP_AUTH_USER'");
$werte = db_fetch_array($id);
$maxmysql = $werte["maxmysql"];
$anbieter = $werte["anbieter"];
$id = db_query("select count(datenbank) as mysql from mysql_datenbanken where kunde =
'$PHP_AUTH_USER'");
$werte = db_fetch_array($id);
$mysql = $werte["mysql"];
if (($mysql >= $maxmysql) && ($maxmysql != -1))
{
$fehlertext = ltext("dbmyan_error1");
db_close();
include("db_mysql.php");
exit();
}
$id = db_query("select datenbank from mysql_datenbanken where kunde = '$PHP_AUTH_USER'");
while ($daten = db_fetch_array($id))
{
$dbstring .= "[".$daten["datenbank"]."]";
}
$i = $mysql + 5;
while ($i > 0)
{
$newtmpmysql = $i;
if (! ereg("[".$newtmpmysql."]", $dbstring))
{
$newmysql = $newtmpmysql;
}
$i--;
}
$id = db_query("select * from mysql_datenbanken where datenbank = $newmysql and kunde =
'$PHP_AUTH_USER'");
if (db_num_rows($id) != 0)
{
$fehlertext = ltext("dbmyan_error2");
db_close();
include("db_mysql.php");
exit();
}
$dblang = "usr_".$PHP_AUTH_USER."_".$newmysql;
db_query("INSERT INTO mysql_datenbanken (kunde, datenbank, anbieter, dbname) VALUES ('$PHP_AUTH_USER',
'$newmysql', '$anbieter', '$dblang')");
db_close();
//if (!isset($mysql_host))
$mysql_host = "localhost";
if ($mysql > 0)
{
mysql_connect($mysql_user_host, $mysql_user_user, $mysql_user_pass);
mysql_select_db("mysql");
// $dblang2 = str_replace("_", "\_", $dblang);
$dblang2 = $dblang;
// mysql_query("INSERT INTO db VALUES ('$mysql_host', '$dblang2', '$PHP_AUTH_USER','Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N','N', 'Y')");
mysql_query("INSERT INTO db VALUES ('$mysql_host', '$dblang2', '$PHP_AUTH_USER',
'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'N', 'N',
'N', 'Y', 'N', 'N')");
mysql_query("CREATE DATABASE $dblang");
mysql_query("FLUSH PRIVILEGES");
$fehlertitel = ltext("dbmyan_errortitle");
$fehlertext = ltext("dbmyan_error3", array($dblang, $PHP_AUTH_USER, $mysql_user_host));
mysql_close();
include("db_mysql.php");
exit();
} else
{
$newpw = mkpasswd(8);
mysql_connect($mysql_user_host, $mysql_user_user, $mysql_user_pass);
mysql_select_db("mysql");
// mysql_query("INSERT INTO user VALUES ('$mysql_host', '$PHP_AUTH_USER',Password('$newpw'), 'N', 'N', 'N', 'N', 'N', 'N','N', 'N', 'N', 'N', 'N', 'N', 'N','N')");
mysql_query("INSERT INTO user VALUES ('$mysql_host', '$PHP_AUTH_USER',
Password('$newpw'), 'N', 'N', 'N', 'N', 'N', 'N',
'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N',
'N',
'N', 'N', 'N', 'N', 'N', 'N', '', '',
'', '', '', '', '')");
// $dblang2 = str_replace("_", "_", $dblang);
$dblang2 = $dblang;
// mysql_query("INSERT INTO db VALUES ('$mysql_host', '$dblang2', '$PHP_AUTH_USER','Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N','N', 'Y')");
mysql_query("INSERT INTO db VALUES ('$mysql_host', '$dblang2', '$PHP_AUTH_USER',
'Y', 'Y', 'Y', 'Y', 'N', 'N', 'Y', 'N',
'N', 'Y', 'N', 'N')");
mysql_query("CREATE DATABASE $dblang");
mysql_query("FLUSH PRIVILEGES");
$fehlertitel = ltext("dbmyan_errortitle");
$fehlertext = ltext("dbmyan_error4", array($dblang, $PHP_AUTH_USER, $mysql_user_host, $newpw));
mysql_close();
include("db_mysql.php");
exit();
}
?>
Dann sollte es gehen!
Für alle die nicht immer localhost als Host haben möchten, einfach bei der Zeile
//if (!isset($mysql_host))
$mysql_host = "localhost";