Wrzucanie projektu na GIT'a z bazą danych

Witam. Robię sobię projekt w Spring-boocie i chciałem go wrzucić na Git-Huba. Zastanawia mnie sprawa bazy danych i haseł. Z tego co się orientuję, to domyślnie MySql jest ustawiony tak, że nie pozwala na operacje z zewnątrz, a więc mogę trzymać login i hasło w pliku ‘properties’ i o ile to nie są dane, których bym używał gdziekolwiek indziej, to mogą sobie być widoczne.

Po drugie, zastanawia mnie jak powinien wyglądać dostęp do bazy danych, dla osób, które chciałyby pobrać mój projekt i go odpalić. No bo znowu w ‘properties’ adres do bazy danych podaję jako nazwę hosta i nazwę bazy danych. Czy więc powinienem po prostu do katalogu głównego uploadowanego projektu dołaczyć pliki .sql i readme.txt z informacją, że trzeba zainstalować klienta sql i załadować bazę danych, żeby projekt zadziałał?

Ja bym nie opierał bezpieczeństwa o domyślne ustawienia programów :slight_smile:

Jeśli masz możliwość wczytywania kilku plików konfiguracyjnych, dane wrażliwe (loginy, hasła, adresy serwerów) trzymałbym w osobnym pliku którego struktura byłaby udostępniona np. w readme.md a sam plik byłby dodany do .gitignore

Sam program może też tworzyć taki plik z pustymi polami do uzupełnienia jeśli go nie znajdzie.

Wlej im tam 10 zł. /Bo to już microsoft przejęło./
I potem możesz wszystko.
Będziesz miał automat do aktualizacji itd.

Odblokowali już prywatne repozytoria na github.com, jedynie niby limit 1 GuB z historią zmian na darmowe konta.

Jeśli baza danych jest integralną częścią aplikacji to dołącz do kodu skrypt sql, który ją tworzy. Razem z wymaganymi danymi.

Danych logowania bym nie wrzucał do repozytorium. Możesz wyfiltrować plik z konfiguracją za pomocą .gitignore, a dołaczyć do projektu jedynie plik szablonu konfiguracji (typu app.config.example) bez haseł. Później na swoim komputerze każdy utworzy sobie na jego podstawie właściwą konfigurację. Są lepsze metody typu Azure Key Vault, ale to w tym wypadku pewnie strzelanie z armaty do muchy.

W pliku readme.md opisz jak uruchomić projekt po pierwszym jego pobraniu z repozytorium. Nie ma nic złego w tym, że wymaga to trochę pracy. Ale powinno być jasno opisane.

Jeśli nie jest to projekt, którym chcesz się dzielić to załóż repo prywatne. Nie musi być koniecznie na github. Choćby gitlab ma darmowe prywatne repozytoria bez ograniczeń (jedynie bez bardziej zaawansowanych narzędzi jak CI/CD).

Wrażliwy danych nigdy nie wrzucaj do repozytorium na GIT. Dodaj je do .gitignore i opisz co trzeba skonfigurować, aby go uruchomić.

Masz dwie opcje:

  1. Szykujesz plik konfiguracji dostępu do bazy bez danych logowania do uzupełnienia przez użytkownika, który chce skorzystać z programu.

  2. Tworzysz kreator, który uruchamia przy pierwszym uruchomieniu aplikacji (jeśli to Windows to pewnie wpis do rejestru), gdzie użytkownik podaje dane dostępu do bazy.