Problemy z konfiguracją serwera baz danych (MySQL, PostgreSQL): Błędy logowania, uprawnień użytkowników i konfiguracji serwera
Problemy z konfiguracją serwera baz danych (MySQL, PostgreSQL): Błędy logowania, uprawnień użytkowników i konfiguracji serwera
📘 Wprowadzenie
Prawidłowa konfiguracja serwera baz danych, takiego jak MySQL lub PostgreSQL, jest kluczowa dla bezpieczeństwa i wydajności aplikacji. W artykule przedstawiamy najczęstsze błędy logowania, problemy z uprawnieniami użytkowników, a także błędy konfiguracyjne, które mogą prowadzić do niedostępności bazy lub jej podatności na ataki.
🔐 Błędy logowania – najczęstsze przyczyny
MySQL
❌ Błąd: ERROR 1045 (28000): Access denied for user
👉 Przyczyny:
- Błędne hasło lub użytkownik
- Użytkownik próbuje się zalogować z niedozwolonego hosta
- Brak odpowiednich uprawnień (
GRANT)
🛠 Rozwiązanie:
Sprawdź użytkowników:
SELECT user, host FROM mysql.user;
Zmień hasło:
ALTER USER 'user'@'localhost' IDENTIFIED BY 'NoweHaslo';
PostgreSQL
❌ Błąd: psql: FATAL: password authentication failed
👉 Przyczyny:
- Zła metoda uwierzytelniania w pliku
pg_hba.conf - Nieprawidłowy login/hasło
🛠 Rozwiązanie:
Edytuj /etc/postgresql/<version>/main/pg_hba.conf i ustaw:
host all all 127.0.0.1/32 md5
Zrestartuj serwer:
systemctl restart postgresql
👥 Problemy z uprawnieniami użytkowników

MySQL
Aby użytkownik miał dostęp do konkretnej bazy:
GRANT ALL PRIVILEGES ON nazwa_bazy.* TO 'uzytkownik'@'localhost';
FLUSH PRIVILEGES;
Błąd „Access denied” może też wynikać z:
- Braku przydzielonej bazy
- Braku
GRANT OPTION
PostgreSQL
Przyznawanie uprawnień:
GRANT CONNECT ON DATABASE baza TO uzytkownik;
GRANT USAGE ON SCHEMA public TO uzytkownik;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO uzytkownik;
⚙️ Problemy konfiguracyjne serwera
MySQL
📁 Plik konfiguracyjny:
/etc/mysql/my.cnf lub /etc/my.cnf
Typowe problemy:
- Zła lokalizacja
datadir - Niewystarczające limity
max_connections,innodb_buffer_pool_size - Brak
bind-addressustawionego na0.0.0.0(jeśli potrzebny dostęp zdalny)
[mysqld]
bind-address = 0.0.0.0
max_connections = 200
PostgreSQL
📁 Pliki:
postgresql.confpg_hba.conf
Typowe problemy:
listen_addressesnie zawiera*lub konkretnego IP- Zbyt restrykcyjne ustawienia
max_connections,work_mem,shared_buffers
listen_addresses = '*'
max_connections = 100
shared_buffers = 256MB
🔍 Diagnozowanie problemów
🔧 Komendy administracyjne:
- MySQL:
mysqladmin -u root -p ping
systemctl status mysql
- PostgreSQL:
pg_isready
systemctl status postgresql
📄 Logi błędów:
- MySQL:
/var/log/mysql/error.log - PostgreSQL:
/var/log/postgresql/postgresql-<version>-main.log
💡 Dobre praktyki konfiguracyjne
✔️ Twórz użytkowników z ograniczonymi uprawnieniami
✔️ Zmieniaj port serwera (np. z 5432 na inny w PostgreSQL)
✔️ Używaj uwierzytelniania hasłem i SSL
✔️ Regularnie wykonuj backupy (mysqldump, pg_dump)
✔️ Monitoruj obciążenie i wykorzystanie zasobów
📋 Przykładowe błędy i rozwiązania
| Problem | System | Rozwiązanie |
|---|---|---|
| Błąd logowania | MySQL | Sprawdź mysql.user, zmień hasło |
| Błąd logowania | PostgreSQL | Zmień pg_hba.conf, użyj md5 |
| Brak połączenia zdalnego | MySQL | Ustaw bind-address = 0.0.0.0 |
| Brak dostępu do tabel | PostgreSQL | Użyj GRANT na schemacie i tabelach |
| Serwer nie startuje | Oba | Sprawdź logi błędów, zweryfikuj port |
🧰 Narzędzia pomocnicze
mysql_secure_installationpsql– klient PostgreSQLadminer,phpMyAdmin– GUI do zarządzania bazamipgAdmin– interfejs dla PostgreSQL
🔚 Podsumowanie
Konfiguracja serwera baz danych wymaga staranności, znajomości systemu uprawnień i zasad działania silnika bazy. Błędy w logowaniu, brak dostępu do danych lub nieprawidłowe ustawienia sieciowe to najczęstsze problemy, które można zdiagnozować poprzez analizę logów, plików konfiguracyjnych oraz testowanie poleceń administracyjnych.






