Zugriffsrecht fürVIEW

Zugriffsrecht fürVIEW

am 16.12.2005 17:31:32 von Norbert

Hallo NG,

wie kann ich einem localen Nutzer das Sichten mit CREATE VIEW erlauben ?

noname@linux:~> mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 5.0.16-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> grant all on Fotosammlung.* to 'norbert'@'localhost' identified by '***';
Query OK, 0 rows affected (0.00 sec)

mysql> grant create view on Fotosammlung.* to 'norbert'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> grant create routine on Fotosammlung.* to 'norbert'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit;
Bye
noname@linux:~> mysql -u norbert -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11 to server version: 5.0.16-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use Fotosammlung;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------------+
| Tables_in_Fotosammlung |
+------------------------+
| bild |
| neu |
| person |
| zuordnung |
+------------------------+
4 rows in set (0.00 sec)

mysql> create view alles as select * from person;
ERROR 1142 (42000): CREATE VIEW command denied to user 'norbert'@'localhost'
for table 'alles'
mysql>

Danke für eine Lösung.

Norbert

Re: Zugriffsrecht fürVIEW

am 17.12.2005 01:19:37 von Axel Schwenke

Norbert wrote:

> wie kann ich einem localen Nutzer das Sichten mit CREATE VIEW erlauben ?
^^^^^^^^^^^^^^^ Häh?

> mysql> grant all on Fotosammlung.* to 'norbert'@'localhost' identified by '***';

Ja, das sollte reichen.

> mysql> grant create view on Fotosammlung.* to 'norbert'@'localhost';
> mysql> grant create routine on Fotosammlung.* to 'norbert'@'localhost';
> mysql> flush privileges;

Das brauchst du alles nicht.

> mysql> create view alles as select * from person;
> ERROR 1142 (42000): CREATE VIEW command denied to user 'norbert'@'localhost'
> for table 'alles'

> Danke für eine Lösung.

Kann ich mit 5.0.18 nicht nachvollziehen. Und es gibt auch keine
Bugreports für dein Problem. Gab es *vor* obigen Aktionen schon
einen Account 'norbert'@'localhost' in MySQL? Was sagen
SELECT CURRENT_USER()
und
SHOW GRANTS FOR
?


XL

Re: Zugriffsrecht fürVIEW

am 17.12.2005 11:19:25 von Norbert

> Kann ich mit 5.0.18 nicht nachvollziehen. Und es gibt auch keine
> Bugreports für dein Problem. Gab es *vor* obigen Aktionen schon
> einen Account 'norbert'@'localhost' in MySQL?
Nein
> Was sagen
> SELECT CURRENT_USER()
mysql> select current_user();

+-------------------+
| current_user() |
+-------------------+
| norbert@localhost |
+-------------------+
1 row in set (0.00 sec)


> und
> SHOW GRANTS FOR
> ?

mysql> show grants for norbert@localhost;
+----------------------------------------------------------- -------------------+
| Grants for norbert@localhost
|
|
+----------------------------------------------------------- -------------------+
+
| GRANT USAGE ON *.* TO 'norbert'@'localhost' IDENTIFIED BY PASSWORD
| '*462366917
EEDD1970A48E87D8EF59EB67D2CA26F'
|
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX,
| ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON `Fotosammlung`.* TO
| 'norbert'@'localhost ' |
+----------------------------------------------------------- -------------------+

------------------------------------------------------------ -------------------+
--+ 2 rows in set (0.00 sec)

Norbert

Re: Zugriffsrecht fürVIEW

am 17.12.2005 14:00:36 von Axel Schwenke

Norbert wrote:
/me wrote:

>> Kann ich mit 5.0.18 nicht nachvollziehen. Und es gibt auch keine
>> Bugreports für dein Problem.

>> Was sagen
>> SHOW GRANTS FOR
>
> mysql> show grants for norbert@localhost;
> +----------------------------------------------------------- -------------------+
>| Grants for norbert@localhost
>|
>|
> +----------------------------------------------------------- -------------------+
> +
>| GRANT USAGE ON *.* TO 'norbert'@'localhost' IDENTIFIED BY PASSWORD
>| '*462366917
> EEDD1970A48E87D8EF59EB67D2CA26F'
> |
>| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX,
>| ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON `Fotosammlung`.* TO
>| 'norbert'@'localhost ' |
> +----------------------------------------------------------- -------------------+

Irgendwie fehlt da CREATE VIEW. Kein Wunder, daß das nicht geht.
Kann es sein, daß du von 4.x auf 5.0 upgraded hast, ohne daß du
'mysql_fix_privilege_tables.sql' hast laufen lassen?

Bzw, ganz allgemein gesprochen: hast du das Handbuch nicht gelesen?

Also:

1. Privilege-Tables upgraden
2. nochmal GRANT ALL ON Fotosammlung.* ... machen
dann nochmal versuchen


XL

Re: Zugriffsrecht fürVIEW

am 17.12.2005 16:40:01 von Norbert

>> Kann es sein, daß du von 4.x auf 5.0 upgraded hast, ohne daß du
>> 'mysql_fix_privilege_tables.sql' hast laufen lassen?
>>
Ich habe 4.1 gelöscht und 5.0 neu installiert.Damit wollte ich
alle Komplikationen (lange Liste Handbuch 2.10.2) mit einem Update
verhindern.


>>
>> 1. Privilege-Tables upgraden
>> 2. nochmal GRANT ALL ON Fotosammlung.* ... machen
>> dann nochmal versuchen
>>
Ja, jetzt geht alles.

Danke für die Hilfe !

Norbert

Re: Zugriffsrecht fürVIEW

am 17.12.2005 17:13:35 von Axel Schwenke

Norbert wrote:
/me wrote

>>> Kann es sein, daß du von 4.x auf 5.0 upgraded hast, ohne daß du
>>> 'mysql_fix_privilege_tables.sql' hast laufen lassen?
>>>
> Ich habe 4.1 gelöscht und 5.0 neu installiert.Damit wollte ich
> alle Komplikationen (lange Liste Handbuch 2.10.2) mit einem Update
> verhindern.

Das ist zwar nicht verkehrt, allerdings mußt du die Daten selber
(also im Prinzip das DATADIR von MySQL) dann händisch löschen.
Deinstallationsroutinen gehen nämlich davon aus, daß du die Daten
behalten willst.


XL