MySQL Datenbank mit _ im Namen
Badboy46
- datenbank
ich verwende pdadmin
wenn ich per pdadmin eine Datenbank anlege hat diese dieses Format
usrdb_username_suffix
wenn ich mich jetzt per phpMyAdmin einlogge, kann ich als User eine Datebnbank anlegen, als Vorschlag ist usrdb?username?suffix
wenn ich die Datenbank per Hand in usrdb-username-suffix abänder, kann der Kunde keien Datenbank mehr anlegen
was muss ich an MySQL oder phpMyAdmin ändern, dass _ akzeptiert wird?
Moin!
wenn ich die Datenbank per Hand in usrdb-username-suffix abänder
was muss ich an MySQL oder phpMyAdmin ändern, dass _ akzeptiert wird?
Der Unterstrich wird ohne Probleme akzeptiert Du hast aber ein "-" (Minus) verwendet.
Meines Wissens dürfen weder Tabellen, noch Spalten, noch Datenbanken ein "-" (Minus) im Namen haben.
Das ergibt spätestens bei der Abfrage Probleme... Ebenso "+", "*", "/", "(", ")" u.s.w.
Lies bitte: http://dev.mysql.com/doc/mysql/de/Legal_names.html
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
wenn ich die Datenbank per Hand in usrdb-username-suffix abänder
was muss ich an MySQL oder phpMyAdmin ändern, dass _ akzeptiert wird?Der Unterstrich wird ohne Probleme akzeptiert Du hast aber ein "-" (Minus) verwendet.
pd admin hat definitiv ein _ verwendet
siehe Screenshot
<img src="http://vip-treffen.de/db.gif" border="0" alt="">
Moin!
wenn ich die Datenbank per Hand in usrdb-username-suffix abänder
was muss ich an MySQL oder phpMyAdmin ändern, dass _ akzeptiert wird?Der Unterstrich wird ohne Probleme akzeptiert Du hast aber ein "-" (Minus) verwendet.
pd admin hat definitiv ein _ verwendet
siehe Screenshot
----------------------------------------------------------------------------
wenn ich die Datenbank per Hand in usrdb-username-suffix abänder
----------------------------------------------------------------------------
... Wozu dann das obenstehende? Vielleicht willst Du erstmal überlegen was Du nun wirklich willst?
Also nochmal:
Der Unterstrich macht keine Probleme. Nicht in MySQL und nicht im Admin.
Verwendest Du aber ein Minus, ein Plus, ein Mal oder ein Durch im Datenbankname, dann musst Du dieses bei Übergabe von Befehlen an MySQL stets maskieren. Ein Umstand, der sehr hinderlich sein kann und den zu vermeiden ich deshalb preferieren würde...
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
wenn ich die Datenbank per Hand in usrdb-username-suffix abänder
was muss ich an MySQL oder phpMyAdmin ändern, dass _ akzeptiert wird?Der Unterstrich wird ohne Probleme akzeptiert Du hast aber ein "-" (Minus) verwendet.
pd admin hat definitiv ein _ verwendet
siehe Screenshot
wenn ich die Datenbank per Hand in usrdb-username-suffix abänder
... Wozu dann das obenstehende? Vielleicht willst Du erstmal überlegen was Du nun wirklich willst?
damit wollte ich nur sagen, dass wenn ich die _ zum - machen, dass dann der User unter phpMyAdmin keien Datenbank mehr erstellen kann
ist ein _ im Datenbankname vorhanden, dann sieht es so aus wie Uauf'n Screenshot :-/
Also nochmal:
Der Unterstrich macht keine Probleme. Nicht in MySQL und nicht im Admin.
Verwendest Du aber ein Minus, ein Plus, ein Mal oder ein Durch im Datenbankname, dann musst Du dieses bei Übergabe von Befehlen an MySQL stets maskieren. Ein Umstand, der sehr hinderlich sein kann und den zu vermeiden ich deshalb preferieren würde...
hm...
und warum sieht das dann so aus unter phpMyAdmin
das versteh ihc nicht
auf einen anderen Server habe ich genau das selbe Problem
dort ist Mysql 3.23.xx drauf und hier 4.0.20
Das System ist SuSE 9.1 der andere Server hat SuSE 8.1
Moin!
damit wollte ich nur sagen, dass wenn ich die _ zum - machen, dass dann der User unter phpMyAdmin keien Datenbank mehr erstellen kann
Das ist falsch. Er muss die Minuszeichen lediglich bei Übergabe des Befehles maskieren bzw. den Datenbankname in Backticks einschließen:
mysql> create database ein-test
;
Query OK, 1 row affected (0.00 sec)
mysql> create database noch-ein-test
;
Query OK, 1 row affected (0.00 sec)
mysql> drop database noch-ein-test
;
Query OK, 0 rows affected (0.00 sec)
mysql> drop database ein-test
;
Query OK, 0 rows affected (0.00 sec)
Wie beschrieben: ich empfehle das _NICHT_ !
ist ein _ im Datenbankname vorhanden, dann sieht es so aus wie Uauf'n Screenshot :-/
Das sieht doch gut aus...
Bitte erkläre jetzt das Problem, welches bei der Verwendung von Unterstrichen auftaucht.
Bitte erkläre auch den Zusammenhang mit der Verwendung des Fragezeichens.
Bei mir gibts mit phpMyAdmin 2.5.5-pl1 und MySQL 4.0.15-Max keinerlei Probleme, da offenbar alles sauber maskiert übergeben wird.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo
ist ein _ im Datenbankname vorhanden, dann sieht es so aus wie Uauf'n Screenshot :-/
Das sieht doch gut aus...
Bitte erkläre jetzt das Problem, welches bei der Verwendung von Unterstrichen auftaucht.
Bitte erkläre auch den Zusammenhang mit der Verwendung des Fragezeichens.Bei mir gibts mit phpMyAdmin 2.5.5-pl1 und MySQL 4.0.15-Max keinerlei Probleme, da offenbar alles sauber maskiert übergeben wird.
also pdadmin hat die Datenbank so erzeugt wie auf'n Screenshot
ich als Benutzer habe mich eingelogt
jetzt habe ich die Möglichkeit die Datenbank eien weitere Datenbank zu erstellen
der User sollte aber nur 2 Stück haben, kann sich jetzt aber noch eine weitere Datatenbank anlegen
das heisst
ich als Benutezr kann so eien Datenbank noch anlegen usrdb?username?suffix
das darf er aber nicht, warum ist das aber möglich?
Moin!
jetzt habe ich die Möglichkeit die Datenbank eien weitere Datenbank zu erstellen
der User sollte aber nur 2 Stück haben, kann sich jetzt aber noch eine weitere Datatenbank anlegendas heisst
ich als Benutezr kann so eien Datenbank noch anlegen usrdb?username?suffixdas darf er aber nicht, warum ist das aber möglich?
Das hat nichts, aber auch gar nichts mit der Benennung der Datenbanken zu tun.
Lies bitte nach, wie man mit MySQL die Benutzerrechte einschränkt. Entweder ein Benutzer darf Datenbanken, Tabellen anlegen, lesen, ändern, löschen oder nicht.
Bitte lies hier: http://dev.mysql.com/doc/mysql/de/Privileges.html
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Das hat nichts, aber auch gar nichts mit der Benennung der Datenbanken zu tun.
dann frag ich mich aber, warum, wenn ein _ im Datenbanknamen vorhanden ist, dass er dann die db mit ? aber nur mit Fragezeichen, ein anderer DB-Name geht nicht, dann kommt
Fehler
SQL-Befehl :
CREATE DATABASE test
;
MySQL meldet:
erstell ich die Datenbank, so wie sie vorgegeben ist, erstellt er sie ohne Fehlermeldung
danach kann der User die Datenbank auch einwandfrei benutzen
der User hat keine Rechte
<img src="http://vip-treffen.de/db2.gif" border="0" alt="">
Moin!
dann frag ich mich aber, warum, wenn ein _ im Datenbanknamen vorhanden ist, dass er dann die db mit ? aber nur mit Fragezeichen, ein anderer DB-Name geht nicht, dann kommt
Es wäre um einiges leichter zu antworten, wenn man eine Aussage hätte, deren Satzbau weniger kryptisch ist.
Ich verstehe gar nichts von dem, was da steht. Bitte formuliere Dein Problem mit angemessener Sorgfalt.
Sprichst Du jedoch eine andere Sprache als Deutsch, dann poste es in dieser, vielleicht kann ich sie, vielleicht übersetzt dann jemand ins deutsche.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
so noch einmal ;-)
ich verstehe es nicht, warum der User eine neue Datenbank anlegen kann, wenn der Datenbankname ein "_" (Unterstrich) enthält, wenn die Datenbank kein "_" (Unterstrich) enthält, kann der User keine Datenbank anlegen
Die Datenbank, die er anlegen kann, wenn seine normale Datenbank ein "_" (Unterstrich) enthält, mus statt den "_" (Unterstrich) dann ein "?" (Fragezeichen) haben
test
;wie man auf den Screenshot sehen kann, hat der User keine Rechte
<img src="http://vip-treffen.de/db2.gif" border="0" alt="">
hier ist nochmal der erste Screenshot
<img src="http://vip-treffen.de/db.gif" border="0" alt="">
Moin!
Ah! Das war jetzt verständlich. Du meinst sowas:
-----------------
Als Root:
-----------------
mysql> create database usertest_2;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON usertest_2.* TO testuser@localhost;
Query OK, 0 rows affected (0.00 sec)
--------------------------------------------------
Als testuser ohne das Recht Datenbanken anzulegen:
--------------------------------------------------
mysql> show databases;
+------------+
| Database |
+------------+
| usertest_2 |
+------------+
1 rows in set (0.00 sec)
mysql> create database usertest2;
ERROR 1044: Access denied for user: 'testuser@localhost' to database 'usertest2'
mysql> create database usertest?2
;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+------------+
| Database |
+------------+
| usertest?2 |
| usertest_2 |
+------------+
2 rows in set (0.00 sec)
+--------------------------------------+
| |
| |
| Das ist allerdings ein klarer Bug. |
| ---------------------------------- |
| |
+--------------------------------------+
----------------------------------------------------------------
Wobei: Weiter als testuser ohne das Recht Datenbanken anzulegen:
----------------------------------------------------------------
mysql> use usertest?2
Database changed
mysql> CREATE TABLE testtabelle
(id
INT NOT NULL);
ERROR 1: Can't create/write to file './usertest?2/testtabelle.frm' (Errcode: 2)
Das bedeutet: Der Benutzer kann in der Datenbank keine Tabellen anlegen, ich hoffe, das tröstet ein wenig...
Zusammenfassende Fehlerbeschreibung:
Ein Benutzer
ohne das Recht Datenbanken zu generieren
kann bei vorausgesetzter Existenz einer Datenbank und bei bestehenden Zugriffsrechten auf dieselbe
mit einem oder mehreren "_" im Datenbankname
mindestenstens eine weitere Datenbank erzeugen
mit mindestens einem "?" anstelle eines beliebigen "_"
aber ohne dann auf diese Zugriffsrechte zu haben.
Server version: 4.0.15-Max
Allerdings ist das Problem eher ein kleines. Ist es das, was Du lesen wolltest?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo fastfix,
bei mir kann der User per phpMyAdmin auch Tabellen in der neuen Datenbank anlegen und diese Tabelle auch mit Daten füllen
MySQL 4.0.20
Moin!
Hallo fastfix,
bei mir kann der User per phpMyAdmin auch Tabellen in der neuen Datenbank anlegen und diese Tabelle auch mit Daten füllen
Tja. Leg die Datenbanken ohne die Unterstriche an :).
Welches OS eigentlich?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo
bei mir kann der User per phpMyAdmin auch Tabellen in der neuen Datenbank anlegen und diese Tabelle auch mit Daten füllen
Tja. Leg die Datenbanken ohne die Unterstriche an :).
pdadmin erzeugt die Benutzer udn Datenbanken, müsste mal schauen, ob ich pdadmin dazu bewegen kann, dass er nuir datenbanken mit "-" erzeugt
Welches OS eigentlich?
SuSE 9.1 mit MySQL 4.0.20
auf ein SuSE 8.1 mit MySQL 3.23.xx hab ich genau das selbe Problem
Moin!
pdadmin erzeugt die Benutzer udn Datenbanken, müsste mal schauen, ob ich pdadmin dazu bewegen kann, dass er nuir datenbanken mit "-" erzeugt
Und wenn der User den pdadmin nicht benutzt, sondern eigene CGI oder PHP Skripte schreibt?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Und wenn der User den pdadmin nicht benutzt, sondern eigene CGI oder PHP Skripte schreibt?
gute Frage
ich denke mal, dass er dann keine anlegen kann/darf, denn die DB muss ja genauso heisen, wie die DB, die schon vorhanden ist.
er hat ja _normalerweise_ keine Rechte
ps. ich hoffe, dass du das jetzt verstehst ^^