Badboy46: MySQL Datenbank mit _ im Namen

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?

  1. 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®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. 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="">

      1. 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®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. 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

          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®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
            1. 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?

              1. 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 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?

                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®

                --
                Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                1. 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

                  Zitat:

                  Fehler

                  SQL-Befehl :

                  CREATE DATABASE test ;

                  MySQL meldet:

                  #1044 - Access denied for user: 'viptrdbj@localhost' to database 'test'

                  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="">

                  1. 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®

                    --
                    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                    1. 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

                      wenn seien Datenbank so heisst "usrdb_benutzer_suffix" kann er noch eien Datenbank mit "usrdb_benutzer_suffix" anlegen.
                      Versucht er die Datenbank anders zu benennen, kommt diese Fehlermeldung

                      Fehler
                      SQL-Befehl :
                      CREATE DATABASE test ;
                      MySQL meldet:
                      #1044 - Access denied for user: 'viptrdbj@localhost' to database '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="">

                      1. 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®

                        --
                        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                        1. 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

                          1. 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®

                            --
                            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                            1. 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

                              1. 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®

                                --
                                Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
                                1. 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 ^^