sobota, 12 października 2024

Postgres on Docker - podstawowe operacje

Uruchomienie kontenera

docker run -d --name postgresCont -p 5432:5432 -e POSTGRES_PASSWORD=pass123 postgres


Uruchomienie kontenera z wolumenem na lokalnym komputerze (hoście)

docker run -d \
  --name postgresCont \
  -p 5432:5432 \
  -e POSTGRES_PASSWORD=pass123 \
  -v ~/postgres_data:/var/lib/postgresql/data \
  postgres

gdzie ~/postgres_data jest lokalną (na hoście) ścieżką na dane

Sprawdzenie kontenera

docker ps


Wejście do konsoli kontenera

docker exec -it postgresCont bash


Wejście do psql Postgresa
-h - host
-U - użytkownik
-d - baza danych

psql -h localhost -U postgres -d db_name


Jeśli użytkownik nie ma hasła, to można wejść tak:

psql -h localhost -U postgres -d db_name --no-password


Wyświetlenie wszystkich baz danych

\l


Utworzenie bazy danych (średnik na końcu)

CREATE DATABASE test_db;


Podpięcie się do bazy

\c test_db


Utworzenie tabeli

CREATE TABLE tech_authors(ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, TYPE TEXT NOT NULL, CATEGORY TEXT NOT NULL, ATICLES INT NOT NULL);


Utworzenie rekordu w tabeli

INSERT INTO tech_authors VALUES (1, 'Franio', 'Junior', 'Docker', 3);


Wyświetlenie zawartości tabeli

SELECT * FROM tech_authors;


Usunięcie tabeli

DROP TABLE tech_authors;

W PostgreSQL użytkownik to
ROLE
spore uproszczenie, ale na początek może wystarczyć.
Wyświetlennie użytkowników

\du

Utworzenie użytkownika

CREATE ROLE test_user SUPERUSER;


Zmiana hasła użytkownika

ALTER USER test_user WITH PASSWORD 'MojeHaslo123';


Nadanie użytkownikowi prawa logowania się

ALTER USER test_user WITH LOGIN;


Nadanie użytkownikowi praw

GRANT ALL PRIVILEGES ON DATABASE test_db TO test_user;


Nadanie użytkownikowi prawa własności do bazy

ALTER DATABASE test_db OWNER TO test_user;


Usunięcie użytkownika

DROP ROLE test_user;


Usunięcie bazy danych

DROP DATABASE test_db;


Sprawdzenie ile Docker zajmuje miejsca na dysku (nie tylko sam Postgres) - tylko na MacOS

du -sh ~/Library/Containers/com.docker.docker/


Usunięcie kontenera wraz z wolumenami

docker rm -v postgresCont


Usunięcie nieużywanych wolumenów Dockera

docker volume prune

niedziela, 26 czerwca 2022

Jak wygenerować klusz SSH (prywatny, publiczny)

Rzecz się tyczy systemu Linux.

Generowanie klucza, prosta komenda:


$ ssh-keygen

Jeśli potwierdzisz domyślne, to klucze zostaną umieszczone:

/home/user_name/.ssh/id_rsa
/home/user_name/.ssh/id_rsa.pub

gdzie id_rsa to klucz prywatny, a id_rsa.pub to klucz publiczny.

Dodawanie klucza do agenta ssh aby nie podawać za każdym razem hasła:


$ eval `ssh-agent` 

wyświetli coś w rodzaju Agent pid 9700, więc potem

$ ssh-add ~/.ssh/id_rsa

Teraz w serwisach, które wykorzystują klucze SSH rejestrujesz swój klucz id_rsa.pub i możesz się tam dostać najczęściej bez hasła.

Jeszcze warto by skopiować nowo dodany klucz do terminali, do ktrych się logujesz przez SSH.

Zakładam, że logujes się do maszyny zewnętrznej na przykład tak:


$ ssh user_name@your.external.server.com

wtedy należy tam skopiować id klucz:

$ ssh-copy-id user_name@your.external.server.com

od teraz nie powinien się już pytać o hasło.

poniedziałek, 6 czerwca 2022

Jak wyświetlić zajęte porty

Naprzykład tak:

netstat -antu

A żeby zobaczyć dodatkowo jaka usługa jest uruchumiona na porcie, uruchom jako root z parametrem -p

sudo netstat -antup

Jak "ubić" usługę, która zajmuje port

W tym przypadku na porcie 9001

sudo kill -9 `sudo lsof -t -i:9001`

czwartek, 23 stycznia 2020

SFTP uruchamiane z linii poleceń bez hasła w Linux

Jeśli uruchamiasz SFTP, to klient odpyta się o hasło. Uniemożliwia to skorzystanie z SFTP np. w cron'ie. Da się jednak uruchomić klienta w tzw "batch mode". Wymaga to generowania i przesyłania sobie kluczy ssh. Pełna instrukcja jak to zrobić znajduje się tutaj: https://www.computerhope.com/unix/sftp.htm#Batch-Mode

środa, 22 stycznia 2020

Zmienne w bash'u w Linuxie

Najprostsze użycie zmiennej:

#!/bin/bash          
STR="Hello World!"
echo $STR
Na konsoli na wypisze string "Hello World!".

Tu ciut więcej:

#!/bin/bash          
FILENAME=/var/my-backup-$(date +%Y-%m-%d).tgz
tar -czf $FILENAME /home/me/
Zmienna $FILENAME to string dynamiczny, w skład którego wchodzi data w formacie rok-miesiąc-dzień, np. 20019-12-31. Program tar zarchiwizuje nam w pliku /var/my-backup-2019-12-21.tgz zawartość katalogu /home/me

I jeszcze króciutko o funkcjach i zmiennych lokalnych (local):

#!/bin/bash
HELLO=Hello 
function hello {
    local HELLO=World
    echo $HELLO
}
echo $HELLO
hello
echo $HELLO
Tu zmienna $HELLO przyjmuje najpierw wartość "hello", a po wykonaniu funkcji hello zmienna $HELLO zmienia wartość na "World".

zip i Linux

Kompresowanie plików.

Składnia:

zip [options] zipfile list_of_files_with_spaces

Skompresuj plik filename.txt do archiwum o nazwie myfile.zip:

$ zip myfile filename.txt

Wyciągnij z archiwum:

$ unzip myfile.zip
Uprzednio zarchiwizowany plik filename.txt zostanie wydobyty z archiwum.

Opcja -u czyli aktualizacja pliku w archiwum

$ zip –u filename.zip file.txt
W tym przypadku zostanie zaktualizowany plik file.txt w archiwum filename.zip

Opcja -m czyli usunięcie pliku źródłowego po udanej kompresji archiwum:

$ zip –m filename.zip file.txt
Tu zostanie usunięty plik file.txt

Opcja -r (recursively) czyli archiwizacja całego katalogu:

$ zip –r filename.zip directory_name
Tu zostanie skompresowany folder o nazwie directory_name