[mysql] problem z dodaniem usera

Serwery i sieci oparte na Slackware, wszelkiego rodzaju usługi, troubleshooting.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
yacooh
Użytkownik
Posty: 24
Rejestracja: 2006-04-25, 09:28
Lokalizacja: wawa

[mysql] problem z dodaniem usera

Post autor: yacooh »

Wiem, ze moj post nie do konca pasuje tematycznie do tego postu, ale nigdzie nie moge znalezc porady i chwytam sie kazdej nitki ;)

Mam baze o nazwie data, loguje sie do bazy na konto root i tworze usera takim oto kodem:

Kod: Zaznacz cały

mysql> grant all
    -> on data.*
    -> to fred identified by 'fred'
    -> with grant option;
uzytkownik tworzony jest poprawnie, moge sie nim logowac do bazy i robic rozne zapytania, ale nie moge z jego poziomu dodawac nowych uzytkownikow. Otrzymuje komunikat:

Kod: Zaznacz cały

ERROR 1410 (42000): You are not allowed to create a user with GRANT
Myslalem, ze przy tworzeniu usera fred wystarczy dodac ostatnia linijke jaka dodalem, zeby ten uzytkownik mogl dodawac nowych. Czy musze jeszcze dodawac jakies prawa dla uzytkownika fred w bazie mysql w tabeli user i db ? Wersja mysql'a to 5.0.22

Moze ktos napisze mi rozwiazanie jakiego sam uzywa?
Awatar użytkownika
yacooh
Użytkownik
Posty: 24
Rejestracja: 2006-04-25, 09:28
Lokalizacja: wawa

Re: [mysql] problem z dodaniem usera

Post autor: yacooh »

zrobilem tak:

Kod: Zaznacz cały

mysql> grant all
    -> on data.*
    -> to fred identified by 'fred'
    -> with grant option; 
nastepnie nadalem fredowi uprawnienia do wykonywania INSERT na tabeli mysql:

Kod: Zaznacz cały

mysql> grant insert
    -> on mysql.*
    -> to fred identified by 'fred'
    -> with grant option; 
i dopiero wtedy fred bedzie mogl nadawac uprawnienia i tworzyc nowych uzytkownikow. Tylko mam pytanie, czy tym kodem (konkretnie INSERT na mysql.*) nie dalem mu za duzych przywilejow? Moze trzeba je jakos jeszcze ukrocic ?
Awatar użytkownika
myuser
Użytkownik
Posty: 442
Rejestracja: 2006-02-09, 17:44
Lokalizacja: Warszawa
Kontakt:

Re: [mysql] problem z dodaniem usera

Post autor: myuser »

Nadałeś mu tylko prawa do dodawania wpisów do bazy mysql.* (mówie o tym drugim wpisie). Możesz przejrzeć jakie tam są tabele. Do każdej z nich fred może dodawać rekordy. Jak chcesz zobaczyć jakie prawa nadałeś użyj komendy:

Kod: Zaznacz cały

SHOW GRANTS FOR fred
Tak BTW to nie wiem czy wiesz o tym, że:

Kod: Zaznacz cały

WITH GRAND OPTION
umożliwia użytkownikowi fred nadawanie innym użytkownikom praw przez niego posiadanych.
Ostatnio zmieniony 2006-09-05, 08:00 przez myuser, łącznie zmieniany 2 razy.
Awatar użytkownika
yacooh
Użytkownik
Posty: 24
Rejestracja: 2006-04-25, 09:28
Lokalizacja: wawa

Re: [mysql] problem z dodaniem usera

Post autor: yacooh »

Widze, ze sie juz powoli gubie;) jezeli nie stanowiloby to dla Ciebie problemu, to moze napisalbys mi, w jaki sposob dodac uzytkownika, ktory bedzie mial pelna kontrole nad baza o nazwie data, oraz bedzie mogl dodawac uzytkownikow i bedzie mogl operowac ich prawami ale tylko do bazy data ?

Wiem o tym, co robi WITH GRANT OPTION, wlasnie to mi jest potrzebne.
Ostatnio zmieniony 2006-09-05, 08:06 przez yacooh, łącznie zmieniany 1 raz.
Awatar użytkownika
myuser
Użytkownik
Posty: 442
Rejestracja: 2006-02-09, 17:44
Lokalizacja: Warszawa
Kontakt:

Re: [mysql] problem z dodaniem usera

Post autor: myuser »

Kod: Zaznacz cały

GRANT ALL ON data.* TO fred@'%' IDENTIFIED BY 'haslo' WITH GRANT OPTION;
oczywiście użytkownik nie musi mieć hasła (możesz nie dawać IDENTIFIED BY 'haslo').
Nie rozumiem w czym masz jeszcze problem?
Ostatnio zmieniony 2006-09-05, 11:02 przez myuser, łącznie zmieniany 1 raz.
Awatar użytkownika
yacooh
Użytkownik
Posty: 24
Rejestracja: 2006-04-25, 09:28
Lokalizacja: wawa

Re: [mysql] problem z dodaniem usera

Post autor: yacooh »

w pierwszej wiadomosci jaka napisalem uzywam dokladnie takiego kodu jak Ty podales i przy probie dodania uzytkownika z nowego konta nie udaje mi sie to. Wyjasnienie jest na samej gorze.
Awatar użytkownika
kajoj
Użytkownik
Posty: 514
Rejestracja: 2005-04-20, 12:37
Lokalizacja: Bydgoszcz
Kontakt:

Re: [mysql] problem z dodaniem usera

Post autor: kajoj »

ja to robie tak

Kod: Zaznacz cały

#!/bin/bash
newuser="ktos"
newpass="haslo"

mysql -s -u root --password="hasełko" --execute="GRANT USAGE ON *.* TO '${newuser}'@'localhost' IDENTIFIED BY '${newpass}' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;  GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES ON \`${newuser}\_%\` . * TO '${newuser}'@'localhost'; FLUSH PRIVILEGES;"
i uzytkownik ktos z haslem haslo moze dzialac ba bazach zaczynajacych sie od ktos_
Ostatnio zmieniony 2006-09-05, 12:06 przez kajoj, łącznie zmieniany 1 raz.
[url=http://xt24.eu/sklep/linux/]Koszulki Slackware[/url]
Nie wierz w cuda
- zdaj się na nie.
Awatar użytkownika
yacooh
Użytkownik
Posty: 24
Rejestracja: 2006-04-25, 09:28
Lokalizacja: wawa

Re: [mysql] problem z dodaniem usera

Post autor: yacooh »

@kajoj idac za Twoim przykladem wklepalem kod (z root'a):

Kod: Zaznacz cały

mysql> GRANT USAGE ON *.* TO 'fred'@'localhost' IDENTIFIED BY 'fred' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;  GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES ON test.* TO 'fred'@'localhost'; FLUSH PRIVILEGES;
zalogowalem sie na konto freda i probowalem dodac nowego usera:

Kod: Zaznacz cały

mysql> grant select on test.* to 'lary'@'localhost' identified by 'lary';
po czym otrzymalem komunikat:

Kod: Zaznacz cały

ERROR 1044 (42000): Access denied for user 'fred'@'localhost' to database 'test'
po wklepaniu:

Kod: Zaznacz cały

SHOW GRANTS FOR 'fred'@'localhost'
otrzymuje:

Kod: Zaznacz cały

GRANT USAGE ON *.* TO 'fred'@'localhost' IDENTIFIED BY PASSWORD 'jakis_hash';
GRANT SELECT .... ON 'test'.* TO 'fred'@'localhost'
Teraz juz zupelnie nie wiem o co chodzi :/


Edited:
Gdy dodalem WITH GRAND OPTION otrzymuje blad: You are not allowed to a create user with grant.


Edited2:
zrobilem w ten sposob:

Kod: Zaznacz cały

GRANT CREATE USER ON *.* TO 'fred'@'localhost' IDENTIFIED BY 'fred';
GRANT ALL ON test.* TO 'fred'@'localhost' IDENTIFIED BY 'fred' WITH GRANT OPTION;
FLUSH PRIVILEGES;
i wszystko zdaje sie dzialac :) Wszystkim dziekuje za pomoc.
Ostatnio zmieniony 2006-09-05, 14:31 przez yacooh, łącznie zmieniany 2 razy.
Awatar użytkownika
kajoj
Użytkownik
Posty: 514
Rejestracja: 2005-04-20, 12:37
Lokalizacja: Bydgoszcz
Kontakt:

Re: [mysql] problem z dodaniem usera

Post autor: kajoj »

Aby user mogl grandowac to z rota taj tak:

Kod: Zaznacz cały

REVOKE ALL PRIVILEGES ON `testuser\_%` . * FROM 'testuser'@'localhost';
GRANT ALL PRIVILEGES ON `testuser\_%` . * TO 'testuser'@ 'localhost' WITH GRANT OPTION;
musi dzialac.
[url=http://xt24.eu/sklep/linux/]Koszulki Slackware[/url]
Nie wierz w cuda
- zdaj się na nie.
Awatar użytkownika
yacooh
Użytkownik
Posty: 24
Rejestracja: 2006-04-25, 09:28
Lokalizacja: wawa

Re: [mysql] problem z dodaniem usera

Post autor: yacooh »

musialem tez zmienic linie, ktora mi podales:

Kod: Zaznacz cały

GRANT USAGE ON *.* TO 'fred'@'localhost' IDENTIFIED BY 'fred';
na:

Kod: Zaznacz cały

GRANT CREATE USER ON *.* TO 'fred'@'localhost' IDENTIFIED BY 'fred';
W manualu znalazlem opis USAGE - Synonym for “no privileges”, CREATE USER pozwala na dodanie uzytkownika dlatego tego "prawa" uzylem.
Awatar użytkownika
kajoj
Użytkownik
Posty: 514
Rejestracja: 2005-04-20, 12:37
Lokalizacja: Bydgoszcz
Kontakt:

Re: [mysql] problem z dodaniem usera

Post autor: kajoj »

yacooh pisze:musialem tez zmienic linie
Oczywiscie, ze nie. Tak jak napisałem user mogł wykonywac wszystko na bazach zaczynajacych sie od user_, czyli tez tworzyc np. user_baza. Pomaga to w utrzymaniu ladu i porzadku na serwerze. A uztykownik ma USEGE na caly system. Reasumujac niemoze robic nic, za wyjadkiem baz zaczynajacych sie od user_ gdzie moze wszystko
[url=http://xt24.eu/sklep/linux/]Koszulki Slackware[/url]
Nie wierz w cuda
- zdaj się na nie.
Awatar użytkownika
yacooh
Użytkownik
Posty: 24
Rejestracja: 2006-04-25, 09:28
Lokalizacja: wawa

Re: [mysql] problem z dodaniem usera

Post autor: yacooh »

ok, rozumiem, ze moj user (FRED) mial dostep do calej bazy test. Ja chcialem zeby tez mogl tworzyc userow, ktorzy mogliby logowac sie (podobnie jak fred) do bazy.

Z tego co zrozumialem z ostatniego Twojego posta to FRED moglby utworzyc jakas tabele (powiedzmy o nazwie users) w bazie test, w ktorej bylyby trzymane loginy, hasla, prawa dostepu itp. innych uzytkownikow do bazy, ktorych fred moglby tworzyc?

Czyli nalezaloby wtedy skonfigurowac serwer mysql'a w ten sposob, zeby przy probie zalogowania sie uzytkownika do bazy sprawdzal, czy taki uzytkownik istnieje takze w tabeli test.users ?
Awatar użytkownika
kajoj
Użytkownik
Posty: 514
Rejestracja: 2005-04-20, 12:37
Lokalizacja: Bydgoszcz
Kontakt:

Re: [mysql] problem z dodaniem usera

Post autor: kajoj »

yacooh, strasznie to udziwniasz. Po co jakas tebela czy cos. Wszystko mozna załatwic GRANTami i REVOKEami. Proponuje zapoznać się z dokumentacją. A na wstęp przeczytaj może TO
[url=http://xt24.eu/sklep/linux/]Koszulki Slackware[/url]
Nie wierz w cuda
- zdaj się na nie.
Awatar użytkownika
yacooh
Użytkownik
Posty: 24
Rejestracja: 2006-04-25, 09:28
Lokalizacja: wawa

Re: [mysql] problem z dodaniem usera

Post autor: yacooh »

Wybacz ale msuze napisac, ze nie czytasz tego co ja pisze wiec powtorze sie raz jeszcze. Jezeli tworze uzytkownika Twoim sposobem:

Kod: Zaznacz cały

GRANT USAGE ON *.* TO '${newuser}'@'localhost' IDENTIFIED BY '${newpass}' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;  GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES ON \`${newuser}\_%\` . * TO '${newuser}'@'localhost'; FLUSH PRIVILEGES;
to pozniej przy probie dodania z nowego konta jakiegos uzytkownika dostaje komunikat:

Kod: Zaznacz cały

Access denied for user 'fred' to database 'test'
Po wykonaniu kodu ktory znalazlem w tutorialu zaproponowanym przez Ciebie (zreszta juz wczesniej pisalem, ze probowalem takiego rozwiazania):

Kod: Zaznacz cały

GRANT ALL PRIVILEGES ON test.* TO admin6@localhost WITH GRANT OPTION;
otrzymuje komunikat:

Kod: Zaznacz cały

You're not allowed to create a user with grant
Jezeli Tobie dziala ktores z tych dwoch rozwiazan u Ciebie - masz szczescie, ktorego mi brak, dlatego szukam innego rozwiazania. Jak juz je znalazlem:

Kod: Zaznacz cały

GRANT CREATE USER ON *.* TO 'fred'@'localhost' IDENTIFIED BY 'fred';
GRANT ALL ON test.* TO 'fred'@'localhost' IDENTIFIED BY 'fred' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
to skrytykowales je i napisales, ze nie mam racji.

Napisz mi, co zlego jest w moim rozwiazaniu (jezeli widzisz jakies bledy), napisz mi (jezeli wiesz dlaczego) dlaczego zaproponowane przez Ciebie rozwiazanie u mnie nie dziala.
ODPOWIEDZ