Konfiguracja MySQL w konsoli

Dawno nie pisałem, trzeba by czymś kogoś podrażnić;)

Wczoraj postanowiłem wykorzystać hosting jaki daje mi znajomy na swoim serwerze. W tym wykorzystać MySQL w PHP. I wtedy zaczęły się schody. Ja nie miałem “konta” w MySQLu, a znajomy za słabo się w nim orientował. Dał mi więc hasło roota MySQL i poprosił bym tylko nie wyrzucił aktualnych baz. Chwile zajęło mi szukanie tego co tu krótko opiszę, więc wierze, że wpis się komuś przyda – komuś komu nie chce się szukać:).

Uruchamiamy MySQL dla roota:

mysql -u root -p

Hasło można też wpisać za “-p”, ale należy pamiętać, że będzie można je wtedy podejrzeć w /proc (no i w pliku historii poleceń powłoki). Oczywiście jak ktoś bawi się na swoim własnym kompie to nie musi się bać, ale ja będę pisał w miarę tak jak powinno się to robić.

Jesteśmy w środku, lista baz jakie istnieją wylistuje polecenie: show databases;

Lista użytkowników, to już SQLem (tutaj możemy mieć problem z wyświetleniem całości informacji w okienku konsoli, wiec wypisujemy tylko te które coś na razie mówią):

SELECT user, host, password FROM mysql.user;

My chcemy dodać nowego użytkownika, oraz dać mu ful praw do nowej bazy danych. Dodajemy usera (login: sigvatr):

CREATE USER 'sigvatr'@'localhost';

Localhost, bo i tak na tym samym kompie będą wykonywane skrypty PHP. Tak powstały użytkownik nie ma hasła – czemu?:) bo jest tutaj nieco z tym zabawy – trzeba podać hash kod wygenerowany przez funkcje PASSWORD(). Do tej pory jeszcze nie znalazłem, jak bezpiecznie (tzn nie widocznie) zmieniać czy nadawać hasła – poniżej będzie o tym, jak hasła zmienić.

Dodanie nowej bazy (o nazwie sigvatrDB):

CREATE DATABASE sigvatrDB;

Uprawnienia (wszystkie dla użytkownika sigvatr, dla bazy sigvatrDB):

GRANT ALL ON sigvatrDB.* TO 'sigvatr'@'localhost';

Ok, powinno być dobrze – SHOW GRANTS dla pewności:)

Jeszcze o zmianie hasła słów kilka – trzeba mieć uprawnienia do edycji tabeli mysql.user, więc albo nadajemy je nowemu użytkownikowi, albo jak root wklepujemy:

update mysql.user set password=password('|\|13Uf4jNik0mU!') where user='sigvatr';

Po zmianie hasła trzeba przeładować ustawienia:

flush privileges;

Teraz nowy użytkownik może się logować z hasłem. Ale to już w PHP;)

mysql_connect('localhost', 'sigvatr', '|\|13Uf4jNik0mU!');

Pozdrawiam.

PS.:
Dla tych którzy chcą więcej, lub nie lubią gotowców:

13 thoughts on “Konfiguracja MySQL w konsoli

  1. Tworzyć użytkowników można też poprzez samo nadawanie praw do tabel.

    Jeśli nie użytkownik ‘user’ nie istnieje, to możesz go utworzyć i nadać mu uprawnienia jednym poleceniem:

    GRANT SELECT, INSERT, UPDATE ON baza.* TO ‘user’@’localhost’ IDENTIFIED BY ‘haslo’

    Zawsze jedno zapytanie mniej 😉

    Like

  2. Ale co jak piszesz sobie skrypt z palca, który tam tworzy jakaś strukturę użytkowników i ich uprawnień. A potem go zapuszczasz?:) Dużo sprzątania:P

    Like

  3. W paru miejscach zapomniałeś średników a w konsoli trzeba dać średnik by zakończyć zapytanie. No skłamałem 😛 bo można dać zamiast niego \G i wtedy wyświetli tak, że i duży SELECT * może być w miarę czytelny 🙂

    Like

  4. SELECT user, host, password FROM mysql.user

    chyba wygodniej jest dac

    use mysql;
    select user,host,password from user;

    jakby to przeczytal ktos kto dopiero sie zaczyna uczyc mysql to sobie jeszcze pomysli ze za kazdym razem trzeba wpisywac nazwe bazy w select 🙂

    Like

  5. @Taeril – średniki zaraz poprawie, co do \G to nie chciałem się rozpisywać. Ja tam wole widok tabelaryczny, niepotrzebne mi były dokładne prawa co i gdzie, ale też z \G korzystałem.@huk – no akurat wole tutaj w jednej linijce.

    Like

  6. Fuj, administracja przez konsolę 😀
    Ja jestem strasznym "n00bem" i w ogóle nie używam konsoli do zarządzania. Wiem, wiem, każdy powinien się zapoznać z konsolą, ale mi się jakoś nie chce 😉

    Like

  7. Alien: praktycznie nic nie napisałeś, np. jaki to system, co dokładnie się dzieje, a co robiłeś. Ja magicznej kuli nie mam. Możliwe, że np. nie masz modułu mysql zainstalowanego w PHP.

    Like

Comments are closed.