PostgreSQL: Pradžia
Kaip pradėti naudotis PostgreSQL
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti PostgreSQL debesijos sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Neriboti ryšiai ir duomenų perdavimai.
- Įtraukta PgAdmin žiniatinklio sąsaja.
- Daugybė modulių įtraukti, tokių kaip
PostGIS,TimescaleDBirPgVector.- Lengvi atnaujinimai vienu paspaudimu.
- Optimali veikla ir tvirta sauga, užtikrinama privačios ir dedikuotos VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero PostgreSQL debesijos prieglobos sprendimą!
Naudojant PostgreSQL psql CLI
Galite valdyti PostgreSQL naudodami oficialų psql CLI. Jis gali būti įdiegtas jūsų kompiuteryje, leidžiant nuotoliniu būdu valdyti PostgreSQL paslaugą. Alternatyviai, galite jį paleisti per Docker. Šis metodas dažnai yra pageidaujamas, nes išvengiama psql diegimo tiesiogiai kompiuteryje ir lengviau keisti versijas.
Norėdami pasiekti psql naudojant Docker, paleiskite šią komandą (įsitikinkite, kad pakeitėte 18 į pagrindinį PostgreSQL paslaugos versijos numerį):
docker run -v $(pwd):/mnt -it postgres:18-alpine /bin/bash
Tada prisijunkite prie savo PostgreSQL paslaugos naudodami:
cd /mnt
psql \
--host=<XXXXXX>.stackhero-network.com \
--username=admin \
--port=<PORT> \
--dbname=admin
Vartotojo ir duomenų bazės kūrimas PostgreSQL
Pagal numatytuosius nustatymus sukuriamas admin vartotojas su administracinėmis teisėmis. Rekomenduojama sukurti atskirą vartotoją ir duomenų bazę kiekvienam projektui, kurį planuojate talpinti.
Naudojant PgAdmin žiniatinklio sąsają
Norėdami naudoti PgAdmin žiniatinklio sąsają, atidarykite savo PostgreSQL domeną su HTTPS (pavyzdžiui, https://<XXXXXX>.stackhero-network.com). Prisijunkite su admin kaip vartotojo vardu ir slaptažodžiu, kurį nustatėte savo paslaugos konfigūracijoje (matomas jūsų Stackhero prietaisų skydelyje).
Vartotojo kūrimas
-
Eikite į
Servers/PostgreSQL, dešiniuoju pelės mygtuku spustelėkiteLogin/Group Rolesir pasirinkiteCreate/Login/Group Role:
Vartotojo kūrimas PostgreSQL naudojant PgAdmin -
Nustatykite prisijungimo vardą:
Nustatyti vartotojo prisijungimą -
Nustatykite saugų slaptažodį, kad išvengtumėte bruteforce atakų:
Nustatyti vartotojo slaptažodį -
Galiausiai įsitikinkite, kad pasirinkta tik "Can login" privilegija:
Nustatyti vartotojo teises
Spustelėkite mygtuką "Save", kad sukurtumėte savo vartotoją.
Duomenų bazės kūrimas
-
Eikite į
Servers/postgresql, dešiniuoju pelės mygtuku spustelėkiteDatabasesir pasirinkiteCreate/Database...:
Duomenų bazės kūrimas naudojant PgAdmin
Rekomenduojama naudoti tą patį pavadinimą tiek duomenų bazei, tiek vartotojui. Pavyzdžiui, jei jūsų projektas vadinasi "superWebsite", apsvarstykite galimybę sukurti vartotoją pavadinimu "superWebsite" ir duomenų bazę pavadinimu "superWebsite".
-
Nustatykite duomenų bazės pavadinimą ir pasirinkite savininką (vartotoją, kurį ką tik sukūrėte):
Nustatyti duomenų bazės pavadinimą ir savininką
Jūsų duomenų bazė dabar sukurta.
Naudojant psql CLI
Vartotojo kūrimas
Norėdami sukurti vartotoją PostgreSQL naudojant psql CLI, paleiskite šią SQL užklausą:
CREATE ROLE "myProject" WITH
LOGIN
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
NOINHERIT
NOREPLICATION
CONNECTION LIMIT -1
PASSWORD 'secretPassword';
Nepamirškite pakeisti
myProjectsavo projekto pavadinimu irsecretPasswordsaugiu slaptažodžiu. Taip pat rekomenduojama naudoti savo projekto pavadinimą kaip prisijungimo ir duomenų bazės pavadinimą. Jei jūsų projektas vadinasi "superWebsite", apsvarstykite galimybę sukurti vartotoją pavadinimu "superWebsite" ir duomenų bazę pavadinimu "superWebsite".Galite sugeneruoti saugų slaptažodį naudodami šią komandą:
openssl rand -base64 24 | tr -d '\n' | cut -c1-32
Duomenų bazės kūrimas
Norėdami sukurti duomenų bazę PostgreSQL naudojant psql CLI, paleiskite šią SQL užklausą:
CREATE DATABASE "myProject"
WITH
OWNER = "myProject"
ENCODING = 'UTF8'
CONNECTION LIMIT = -1
IS_TEMPLATE = false;
Rekomenduojama naudoti tą patį pavadinimą tiek duomenų bazei, tiek vartotojui. Pavyzdžiui, jei jūsų projektas vadinasi "superWebsite", apsvarstykite galimybę sukurti vartotoją pavadinimu "superWebsite" ir duomenų bazę pavadinimu "superWebsite".
Duomenų importavimas iš kompiuterio į PostgreSQL
Vienas iš paprasčiausių būdų importuoti duomenis iš kompiuterio į jūsų PostgreSQL instanciją yra naudoti PostgreSQL CLI. Savo kompiuteryje paleiskite šią komandą (pakeiskite <DB_NAME> savo duomenų bazės pavadinimu ir data.pgsql savo SQL failo pavadinimu):
psql \
--host=<XXXXXX>.stackhero-network.com \
--username=admin \
--port=<PORT> \
--dbname=<DB_NAME> \
< data.pgsql
Duomenų eksportavimas iš PostgreSQL į kompiuterį
Duomenų eksportavimas iš jūsų PostgreSQL instancijos į kompiuterį yra taip pat paprastas naudojant PostgreSQL CLI.
-
Norėdami eksportuoti visą duomenų bazę (pakeiskite
<DB_NAME>savo duomenų bazės pavadinimu):pg_dump \ --host=<XXXXXX>.stackhero-network.com \ --username=admin \ --port=<PORT> \ --dbname=<DB_NAME> \ > data.pgsql -
Norėdami eksportuoti vieną lentelę (pakeiskite
<DB_NAME>savo duomenų bazės pavadinimu ir<TABLE_NAME>savo lentelės pavadinimu):pg_dump \ --host=<XXXXXX>.stackhero-network.com \ --username=admin \ --port=<PORT> \ --dbname=<DB_NAME> \ --table=<TABLE_NAME> \ > data.pgsql
Naudojant PostgreSQL su Node.js
Norėdami prisijungti prie PostgreSQL naudojant Node.js ir pg paketą (taip pat žinomą kaip node-postgres), galite apsvarstyti šį pavyzdį. Atkreipkite dėmesį į ssl argumentą, kuris yra svarbus užtikrinant TLS šifravimą:
const { Client } = require('pg');
(async () => {
const pg = new Client({
host: '<XXXXXX>.stackhero-network.com',
port: <PORT>,
user: '<USERNAME>',
password: '<PASSWORD>',
database: '<DATABASE>',
ssl: {}
});
await pg.connect();
const result = await pg.query('SELECT 1');
await pg.end();
})().catch(error => {
console.error('');
console.error('🐞 Įvyko klaida!');
console.error(error);
process.exit(1);
});
Pilnas pavyzdys, kaip naudoti PostgreSQL su Node.js ir pg biblioteka (ir async/await), yra prieinamas šioje Git saugykloje:
https://github.com/stackhero-io/postgresqlGettingStarted.
Naudojant PostgreSQL su Node.js/TypeORM
Norėdami prisijungti prie PostgreSQL iš Node.js naudojant TypeORM, nustatykite ssl vėliavą į true, kaip parodyta žemiau esančiame pavyzdyje:
createConnection({
type: 'postgres',
host: '<XXXXXX>.stackhero-network.com',
port: <PORT>,
username: '<USERNAME>',
password: '<PASSWORD>',
database: '<DATABASE>',
extra: {
ssl: true
}
});
Naudojant PostgreSQL su Django
Jei jis dar nėra įdiegtas, įdiekite psycopg modulį, kuris bus naudojamas prisijungti prie PostgreSQL:
pip install psycopg
Šiame pradiniame žingsnyje slaptažodį saugosite tiesiogiai settings.py faile. Šis metodas skirtas tik testavimui, nes jis nėra saugus. Vėliau šioje dokumentacijoje rasite geros praktikos pavyzdį.
Atidarykite settings.py failą ir pridėkite šią konfigūraciją:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'HOST': '<XXXXXX>.stackhero-network.com',
'PORT': <PORT>,
'OPTIONS': {
'sslmode': 'require',
},
'NAME': 'admin',
'USER': 'admin',
'PASSWORD': '<ADMIN_PASSWORD>'
}
}
Atsargiai: šis pavyzdys nerekomenduojamas gamybai ir skirtas tik testavimo tikslams!
Kai jūsų ryšys veikia, galite naudoti saugesnį būdą saugoti kredencialus. Šis pavyzdys naudoja django-environ ir saugo kredencialus .env faile.
-
Įdiekite
django-environ:pip install django-environ -
Atidarykite
settings.pyfailą ir pakeiskite jį taip:import environ env = environ.Env() environ.Env.read_env() DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'HOST': env('STACKHERO_POSTGRESQL_HOST'), 'PORT': <PORT>, 'OPTIONS': { 'sslmode': 'require', }, 'NAME': 'admin', 'USER': 'admin', 'PASSWORD': env('STACKHERO_POSTGRESQL_ADMIN_PASSWORD') } } -
Atidarykite arba sukurkite
.envfailą tame pačiame kataloge kaipsettings.pyir pridėkite:STACKHERO_POSTGRESQL_HOST=<XXXXXX>.stackhero-network.com STACKHERO_POSTGRESQL_ADMIN_PASSWORD=<ADMIN_PASSWORD> -
Galiausiai pridėkite
.envprie savo.gitignorefailo, kad užtikrintumėte, jog jūsų kredencialai nėra saugomi jūsų Git saugykloje:
echo ".env" >> .gitignore
PostgreSQL PostGIS plėtinio aktyvavimas
PostGIS plėtinys yra įtrauktas į mūsų PostgreSQL paslaugą. Jūs turite jį aktyvuoti kiekvienoje duomenų bazėje, kurioje planuojate jį naudoti.
Norėdami aktyvuoti plėtinį, prisijunkite prie savo duomenų bazės ir vykdykite šią užklausą:
CREATE EXTENSION postgis;
Galite patikrinti, ar PostGIS veikia, patikrinę jo versiją:
SELECT PostGIS_Full_Version();
Alternatyviai, gaukite visų įdiegtų PostGIS plėtinių sąrašą:
SELECT * FROM pg_extension WHERE extname LIKE 'postgis%';
Jei reikia, galite pridėti kitų plėtinių. Tačiau labai rekomenduojama neaktyvuoti plėtinių, kurių nenaudosite:
-- Aktyvuoti PostGIS
CREATE EXTENSION postgis;
-- Aktyvuoti rasterio palaikymą
CREATE EXTENSION postgis_raster;
-- Aktyvuoti topologiją
CREATE EXTENSION postgis_topology;
-- Fuzzy matching reikalingas Tiger
CREATE EXTENSION fuzzystrmatch;
-- Taisyklėmis pagrįstas standartizatorius
CREATE EXTENSION address_standardizer;
-- Pavyzdinis taisyklių duomenų rinkinys
CREATE EXTENSION address_standardizer_data_us;
-- Aktyvuoti US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
Atsargiai: neaktyvuokite PostGIS duomenų bazėje
postgres!
PostgreSQL PostGIS plėtinio deaktyvavimas
Norėdami pašalinti PostGIS iš duomenų bazės, prisijunkite prie atitinkamos duomenų bazės ir vykdykite šią užklausą:
DROP EXTENSION postgis;
PgVector plėtinio aktyvavimas
PgVector plėtinio aktyvavimas Stackhero yra paprastas. Vykdykite šią užklausą:
CREATE EXTENSION vector;
TimescaleDB plėtinio aktyvavimas
TimescaleDB plėtinio aktyvavimas Stackhero yra paprastas. Vykdykite šią užklausą:
CREATE EXTENSION timescaledb;
SQL planavimo ir vykdymo statistikos sekimas (pg_stat_statements)
Norėdami įgalinti pg_stat_statements palaikymą, pirmiausia įgalinkite jį savo PostgreSQL konfigūracijoje per Stackhero prietaisų skydelį. Tada įgalinkite plėtinį savo dabartinei duomenų bazei vykdydami:
CREATE EXTENSION pg_stat_statements;
Daugiau informacijos rasite PostgreSQL oficialioje dokumentacijoje.
PostgreSQL konfigūravimas su Skyvia
Naudoti Skyvia su Stackhero PostgreSQL yra paprasta. Užtikrinkite saugų ryšį konfigūruodami šiuos nustatymus:
- Nustatykite
ProtocolįSSL - Nustatykite
Portį savo PostgreSQL portą - Priverskite šifravimą nustatydami
SSL ModeįRequire - Pasirinkite
SSL TLS Protocol1.2arba aukštesnį
Daugiau informacijos apie Skyvia konfigūraciją rasite Skyvia oficialioje dokumentacijoje.
Skyvia konfigūracijos pavyzdys su Stackhero PostgreSQL