Zawsze miałem problem z bazami danych. Po instalacji nigdy nie pamiętam jak utworzyć użytkownika i bazę dla niego, tak żeby miał do niej wszelkie prawa, ale nie miał praw do innych baz. Poniżej krótki tutorial jak to zrobić:
MySQL
$ mysql -u root -p
Nie zawsze dodajemy to "-p" - tylko jeśli root ma hasło.
mysql> create user franek identified by 'haslo_frania';
Tworzymy użytkownika "franek", z hasłem "haslo_frania".
mysql> grant all on baza_frania.* to 'franek'@'%';
Znak '%' oznacza że nadajemy prawa użytkownikowi 'franek' niezależnie od tego skąd się połączy. Gdyby zamiast '%' było np. 'localhost' lub '192.168.1.22', znaczyłoby to że takie prawa ma franek tylko jeśli połączy się z tych hostów.
mysql> flush privileges;
mysql> quit
$ mysql -u franek -p
Znowu podłączamy się do serwera, ale teraz już jako użytkownik franek.
mysql> create database baza_frania;
Tworzymy bazę "baza_frania". Możemy w niej tworzyć tabele, zapisywać, zmieniać, generalnie robić wszystko.
PostgreSQL
$ sudo -u postgres psql
W ten sposób uruchamiamy klienta postgresa jako user "postgres". Jest to odpowiednik MySQLowego roota. Przez sudo robi się to na ubuntu, na innych systemach może być inaczej, generalnie chodzi o to żeby uruchomić "psql" jako użytkownik "postgres".
postgres=# create user franek password 'haslo_frania';
Tworzymy użytkownika franek z hasłem "haslo_frania".
postgres=# create database baza_frania owner franek;
W ten sposób utworzyliśmy bazę "baza_frania", której franek jest właścicielem, zatem ma do niej pełne prawa.
Możemy też stworzyć schema dla użytkownika:
postgres=# create schema moja_schema;
Oraz sprawić, by ta schema była dla niego domyślną:
postgres=# alter user franek set search_path moja_schema;
postgres=# \q
Wychodzimy z narzędzia psql
$ psql -U franek -W -d baza_frania
I podłączamy się jako użytkownik "franek" do bazy "baza_frania". Czasami trzeba jeszcze dodać -h localhost żeby podłączyć się przez interfejs sieciowy, bo możliwość podłączenia się bezpośrednio do bazy często jest zablokowana.
To wszystko.
Pozdrawiam.
2 comments:
Hmm, zapomniałeś o jednym.
W MySQLu, po GRANT ALL on... należy jesio wydać komendę:
FLUSH PRIVILEGES;
celem przeładowania uprawnień, inaczej w nieskończoność można próbować się "zalogować na" nowo utworzonego użytkownika bazy danych.
Już update'uję. Dzięki :)
Post a Comment