Jak w MySQL stworzyć użytkownika i nadać mu prawa do bazy danych

Zgodnie ze sztuką każda instalowana na serwerze aplikacja, która korzysta z baz danych powinna czynić to za pomocą dedykowanego użytkownika z prawami dostępu wyłącznie do konkretnej bazy. Należy unikać sytuacji gdy ten sam użytkownik, a tym bardziej root, obsługuje różne aplikacje. Tym bardziej, że stworzenie dedykowanych baz danych i użytkowników to kwestia raptem kilku komend.

Chesz przetestować działanie poniższych instrukcji, a nie masz dostępu do serwera Linuxowego? Po rejestacji na DigitalOcean otrzymasz 100 dolarów do wykorzystania w ciągu 60 dni, a z przyjaznym interfejsem uruchomisz ulubioną dystrybucję w ciągu paru minut.

Logowanie do mysql

Do administracji bazami MySQL najczęściej używa się domyślnie tworzonego konta o nazwie root, o nieograniczonych możliwościach. Czasami, ze względów bezpieczeństwa, tworzy się osobne konto o tych samych uprawnieniach jednak z inną nazwą użytkownika.

Na potrzeby niniejszego przewodnika użyte będzie konto roota, na które można zalogować się za pomocą komendy mysql -u root -p, po której system poprosi o hasło, które należy podać. Niektóre przewodniki sugerują podawanie hasła bezpośrednio po parametrze -p, lecz jest to bardzo zły pomysł mający negatywny wpływ na bezpieczeństwo.

radek@centos.local:~$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Tworzenie bazy danych (krok opcjonalny)

Jeżeli istnieje potrzeba utworzenia bazy danych można to zrobić za pomocą: CREATE DATABASE przykladowaBaza;. Oczywiście zamiast przykladowaBaza można użyć innej nazwy.

MariaDB [(none)]> CREATE DATABASE przykladowaBaza;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]>

Tworzenie użytkownika i nadawanie mu wszystkich praw

Kolejnym krokiem jest utworzenie użytkownika poleceniem: CREATE USER 'nowyUzytkownik'@'localhost' IDENTIFIED BY '9rmvqx5nympfviy';.

MariaDB [(none)]> CREATE USER 'nowyUzytkownik'@'localhost' IDENTIFIED BY '9rmvqx5nympfviy';
Query OK, 0 rows affected (0.52 sec)

MariaDB [(none)]>

NowyUżytkownik to nazwa użytkownika, a localhost oznacza, ze może on łączyć się tylko z komputera na którym zainstalowany jest MySQL. Na samym końcu podane jest jego hasło, które najlepiej wygenerować za pomocą opisanego niedawno programu KeePass lub strony random.org.

Utworzony użytkownik niewiele zdziała bez odpowiednich praw, dlatego w zależności od potrzeb, można je nadać na całą bazę lub na konkretną tabelę.

W przypadku nadania praw na dla użytkownika nowyUzytkownik@localhost na całą bazę przykladowaBaza odpowiednim zapytaniem będzie GRANT ALL PRIVILEGES ON przykladowaBaza.* TO 'nowyUzytkownik'@'localhost';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON przykladowaBaza.* TO 'nowyUzytkownik'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

Na sam koniec trzeba przeładować uprawnienia poleceniem FLUSH PRIVILEGES;, zaś połączenie z bazą danych zamyka się poleceniem quit.

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye
radek@centos.local:~$