PostgreSQL-г ашиглаж эхэлж байна. Postgresql Remote холболт Өгөгдлийн сангийн хэрэглэгчдийг удирдах

PostgreSQL нь нээлттэй платформ хоорондын объект хоорондын DBMS юм эх код. Энэ нийтлэлээс та Ubuntu Linux дээр PostgreSQL-г хэрхэн суулгах, түүнтэй холбогдож, хэд хэдэн энгийн SQL асуулга ажиллуулах, мөн нөөцлөлтийг хэрхэн тохируулах талаар сурах болно.

PostgreSQL 9.2-г Ubuntu 12.10 дээр суулгахын тулд дараах тушаалуудыг ажиллуулна уу.

sudo apt-add-repository ppa:pitti/ postgresql
sudo apt-get шинэчлэлт
sudo apt-get install postgresql-9.2

Бүрхүүлээр дамжуулан DBMS-тэй ажиллахыг хичээцгээе:

sudo -u postgres psql

Туршилтын мэдээллийн сан болон туршилтын хэрэглэгчийг үүсгэцгээе:

ӨГӨГДЛИЙН САН БҮТЭЭГДЭХҮҮН тест_өгөгдлийн сан;
ХЭРЭГЛЭГЧИЙН test_хэрэглэгчийг "qwerty" нууц үгээр үүсгэнэ үү;
БҮХНИЙГ ӨГӨГДӨЛИЙН САН ДЭЭР тест_өгөгдлийн баазыг тест_хэрэглэгчд ОЛГОХ;

Бүрхүүлээс гарахын тулд \q командыг оруулна уу.

Одоо test_user-ийн нэрийн өмнөөс үүсгэсэн мэдээллийн сантай ажиллахыг оролдъё:

psql -h localhost test_database test_user

Шинэ хүснэгт үүсгэцгээе:

ХЭРЭГЛЭГЧИЙН ID-г ҮЗҮҮЛЭХ;
ХҮСНЭГТ ҮЗҮҮЛЭХ хэрэглэгчид (
id БҮХЭЛИЙН АНХАН ТҮЛХҮҮР өгөгдмөл NEXTVAL ("user_ids" ) ,
нэвтрэх CHAR(64) ,
нууц үг CHAR(64));

Бусад DBMS-ээс ялгаатай нь PostgreSQL-д auto_increment шинж чанартай баганууд байдаггүйг анхаарна уу. Үүний оронд Postgres дарааллыг ашигладаг. Асаалттай одоогоор Nextval функцийг ашигласнаар бид өгөгдсөн дарааллын өвөрмөц тоонуудыг авах боломжтой гэдгийг мэдэхэд хангалттай.

NEXTVAL SELECT ("user_ids" );

Хэрэглэгчдийн хүснэгтийн id талбарын өгөгдмөл утгыг тохируулснаар NEXTVAL("хэрэглэгчийн_ids"), бид auto_increment өгдөгтэй ижил үр дүнд хүрсэн. Хүснэгтэд шинэ бичлэг нэмэх үед бид id-г зааж өгөх шаардлагагүй, учир нь автоматаар өвөрмөц ID үүсгэгдэх болно. Олон хүснэгтүүд ижил дарааллыг ашиглаж болно. Ингэснээр бид эдгээр хүснэгтийн зарим талбаруудын утгууд давхцахгүй гэдгийг баталж чадна. Энэ утгаараа дараалал нь auto_increment-ээс илүү уян хатан байдаг.

Яг ижил хүснэгтийг зөвхөн нэг тушаалыг ашиглан үүсгэж болно:

ХҮСНЭГТ ҮҮСЭХ хэрэглэгчид2 (
id ЦУВРАЛ АНХАН ТҮЛХҮҮР,
нэвтрэх CHAR(64) ,
нууц үг CHAR(64));

Энэ тохиолдолд id талбарын дарааллыг автоматаар үүсгэнэ.

Одоо \d командыг ашигласнаар та боломжтой бүх хүснэгтийн жагсаалтыг харах боломжтой бөгөөд \d хэрэглэгчийг ашигласнаар та хэрэглэгчдийн хүснэгтийн тайлбарыг харж болно. Хэрэв та хайж буй мэдээллээ олж авахгүй бол \d-ийн оронд \d+ гэж оролдоно уу. Та \l командын тусламжтайгаар өгөгдлийн сангийн жагсаалтыг авч, \c dbname командын тусламжтайгаар тодорхой мэдээллийн сан руу шилжиж болно. Тушаалын тусламжийг харуулахын тулд \?

.

PostgreSQL нь хүснэгт болон баганын нэрийг анхдагчаар жижиг үсгээр хөрвүүлдэг гэдгийг анхаарах нь чухал. Хэрэв та ийм зан үйлийг хүсэхгүй бол давхар хашилт ашиглаж болно:

CREATE TABLE "otherTable" ("someValue" VARCHAR (64 ) );

PostgreSQL-ийн өөр нэг онцлог нь энэхүү DBMS-тэй ажиллахад хүндрэл учруулж болзошгүй "схем" гэж нэрлэгддэг. Схем гэдэг нь өгөгдлийн сангийн доторх хүснэгтүүдтэй лавлах гэх мэт хүснэгтүүдийн нэрийн орон зай шиг зүйл юм.

Схем үүсгэх:

SCHEMA захиалга үүсгэх;

Схем рүү шилжих:

Захиалга ХИЙХ хайлтын_замыг тохируулах;

Та \dn командыг ашиглан одоо байгаа схемүүдийн жагсаалтыг харж болно. Өгөгдмөл схемийг нийтийн гэж нэрлэдэг. Зарчмын хувьд та схем байгаа эсэхийг мэдэхгүйгээр PostgreSQL-ийг амжилттай ашиглаж болно. Гэхдээ хуучин кодтой ажиллахдаа, зарим тохиолдолд схемийн талаар мэдэх нь маш хэрэгтэй байж болох юм.

Үгүй бол PostgreSQL-тэй ажиллах нь бусад харилцааны DBMS-тэй ажиллахаас тийм ч их ялгаатай биш юм.
Хэрэглэгчид INSERT INTO (нэвтрэх, нууц үг)
ҮНЭ ЦЭНЭ ("afiskon", "123456") ;

СОНГОХ * Хэрэглэгчдээс;

Хэрэв та одоо өөр машинаас Postgres-тэй холбогдохыг оролдвол бүтэлгүйтэх болно:

psql -h 192.168.0.1 тест_өгөгдлийн сангийн тест_хэрэглэгч
Psql: серверт холбогдож чадсангүй: Холболтоос татгалзсан
Сервер "192.168.0.1" хост дээр ажиллаж байгаа бөгөөд хүлээн авч байна уу?

5432 порт дээрх TCP/IP холболтууд?

Үүнийг засахын тулд мөрийг нэмнэ үү:

сонсох_хаяг = "localhost,192.168.0.1"

... /etc/postgresql/9.2/main/postgresql.conf файл руу мөн. : Анхаар Хэрэв та Windows үйлдлийн систем дээр ажиллаж байгаа бөгөөд PostgreSQL болон Debit Plus V12-г суулгаагүй байгаа бол татаж авах хуудаснаас Debit Plus V12 угсралтыг урьдчилан суулгасан PostgreSQL DBMS болон холбогдсон мэдээллийн сантай (Украины үндсэн тохиргоотой) татаж авах боломжтой. . Үгүй бол та эхлээд PostgreSQL DBMS болонпрограм хангамжийн багц

"Debit Plus V12", үүний дараа та эдгээр зааврын дагуу холболтыг тохируулж, PostgreSQL мэдээллийн санг импортлох боломжтой.

    PostgreSQL мэдээллийн санг холбохын тулд та дараах алхмуудыг хийх ёстой. "Debit Plus V12"-г ажиллуулаад нэмнэ үү (контекст цэс"Шинэ нэмэх")

    "Одоо байгаа жагсаалтад нэмэх" талбарт тэмдэглэгээг үлдээгээрэй.

"DBMS" - POSTGRE.

"Өгөгдлийн сангийн сервер" - localhost.

"Өгөгдлийн сангийн нэр" - PostgreSQL DBMS-ээс өгөгдлийн сангийн нэрийг жижиг латин үсгээр (жижиг үсгээр) зааж өгнө.

Жич: Ихэвчлэн нэг суурийг ашигладаг. Тусгай зорилгоор мэдээллийн санг хэд хэдэн хэсэгт хувааж болох бөгөөд дараа нь "Олон мэдээллийн санг ашиглах" хажуугийн нүдийг чагталж, "Дараах" товчийг дарж, "шошго" -ын физик мэдээллийн сантай харьцаж байгааг зааж өгөх хэрэгтэй. Жишээлбэл, хэд хэдэн аж ахуйн нэгжийн мэдээллийн сан нь ижил лавлах (эсрэг талууд, эд зүйлс гэх мэт) -д хамаарах тохиолдолд энэ нь зайлшгүй шаардлагатай байж магадгүй юм. Энэ хэргийг цаашид хэлэлцэхгүй.

"Тохиргооны лавлах" - PostgreSQL (drive\DebetPlusV12\base\pgdpbase)-ийн мэдээллийн баазын тохиргоонд хүрэх замыг зааж өгнө үү.

"Дууссан" товчийг дарж өөрчлөлтөө хадгална уу.

    pgAdmin (PostgreSQL DBMS администратор) ажиллуулж, сервер нэмж (Файл/Сервер нэмэх...) болон шинэ мэдээллийн сан нэмнэ ("Шинэ мэдээллийн сан..." цэс).

Хост талбарт серверийн нэр, localhost-ыг оруулаад, хүссэн талбаруудыг бөглөнө үү.

"Нэр" талбарт мэдээллийн сангийн нэрийг оруулна уу ("Debit Plus V12" мэдээллийн санд холбогдох тохиргооны "Сервер" талбарт оруулсантай адил).

    Архиваас мэдээллийн санг импортлохын тулд "Сэргээх..." цэсийг ашиглана уу

Өгөгдлийн сангийн архив руу явах замыг зааж өгнө үү dpbase.bakup (drive\DebetPlusV12\base\pgdpbase).

    Та Debit Plus V12-д анхдагчаар (нууц үггүйгээр) администратор болох dpadmin хэрэглэгчийг нэмж болно.

Энэ хэрэглэгчдэд бүх эрхийг оноох.

Анхаарна уу : Та dpadmin хэрэглэгчийг нэмэх боломжгүй тул мэдээллийн санг идэвхжүүлэхдээ postgres администраторын нэрийг оруулах шаардлагатай болно.

Өгөгдлийн сангийн жагсаалтыг сэргээнэ үү ("Сэргээх" цэс).

Анхаарна уу : Хэрэв та хэрэглэгчдэд "Супер хэрэглэгчийн" эрхийг олгохыг хүсэхгүй байгаа бол "Хүснэгтүүд" болон "Харагдах байдал" руу эрх өгнө үү. Үүнийг хийхийн тулд харгалзах объектыг сонгоод "Грант шидтэн" контекст цэсийн зүйлийг сонгоно уу.

"Сонголт" таб дээрээс "Бүгдийг шалгах" товчийг дарж, "Эрх" таб дээр "БҮХ" гэснийг сонгоод "Нэмэх/Өөрчлөх" товчийг дарна уу. Өөрчлөлтүүдээ хадгална уу.

    Debit Plus V12 програм хангамжийн мэдээллийн сангийн холболтын тохиргоог идэвхжүүлнэ (контекст цэс "Идэвхтэй болгох").

Систем мэдээллийн санд холбогдохын тулд нууц үг асуух болно. Тийм дээр дарна уу.

Анхаар! Хэрэв ийм мессеж гарч ирэхгүй бол "Хэрэгслүүд" / "Өгөгдлийн сангийн бүтцийг шинэчлэх" цэсийн зүйлийг сонгон мэдээллийн сангийн бүтцийг шинэчлэх ажлыг эхлүүлнэ үү.

Үүний үр дүнд дараах цонх гарч ирнэ.

Бүх шалгах нүдийг өгөгдмөл байдлаар үлдээгээрэй (өгөгдлийн сангийн бүх хүснэгтийн "Дахин индекс" баганад тэмдэглэгээ байх ёстой).

Өөрчлөлт хийж дууссаны дараа та ажиллаж эхлэх боломжтой.

    "Debit Plus V12"-г ажиллуулж, шинэ суурь нэмнэ үү (контекст цэс "Шинэ нэмэх").

    "Жагсаалтад байгаа нэмэх" талбарт тэмдэглэгээ үлдээнэ үү.

Эхний талбарт мэдээллийн сангийн дурын нэрийг оруулна уу (ажиллаж буй компьютер бүрт өөр өөр байж болно).

"DBMS" - POSTGRE.

"Өгөгдлийн сангийн сервер" - серверийн нэр эсвэл IP хаяг.

"Өгөгдлийн сангийн сервер порт" - өгөгдлийн сангийн серверийн портыг зааж өгнө үү, анхдагч нь 5432.

"Өгөгдлийн сангийн нэр" - мэдээллийн сангийн нэрийг латин жижиг үсгээр оруулна.

"Өгөгдлийн сангийн схемийн нэр" - dpbase.

Зөвхөн "Debit Plus зөвшөөрлийг ашиглах" нүдийг чагтална уу.

"Тохиргооны лавлах" - PostgreSQL-д зориулсан мэдээллийн сангийн тохиргоонд хүрэх замыг зааж өгнө (сүлжээний зам\DebetPlusV12\base\pgdpbase).

"Дуусгах" товчийг дарж өөрчлөлтөө хадгалаад мэдээллийн санг идэвхжүүлнэ үү.

    Эхлүүлэх сонголтыг тохируулах ("Тохиргоо" / "Эхлүүлэх сонголтууд" үндсэн цэс)

Гарч ирсэн цонхны "Тохиргоог өөрчлөх нууц үг" талбарт 150301 нууц үгээ оруулаад "Зөвшөөрөх" товчийг дарна уу.

Сервер дээрх JDebet хавтас руу очих замыг зааж, хадгалах товчийг дарна уу. Өгөгдлийн санг идэвхтэй болгосноор та ажиллаж эхлэх боломжтой.

Бусад хэрэглэгчдийн нэрийн өмнөөс тушаалуудыг гүйцэтгэх ажлыг зохион байгуулахад ашигладаг sudo хэрэгсэлд (CVE-2019-18634) эмзэг байдал илэрсэн бөгөөд энэ нь систем дэх эрхээ нэмэгдүүлэх боломжийг олгодог. Асуудал […]

WordPress 5.3 хувилбар нь WordPress 5.0-д нэвтрүүлсэн блок засварлагчийг шинэ блок, илүү ойлгомжтой харилцан үйлчлэл, хүртээмжийг сайжруулж, өргөжүүлж байна. Засварлагчийн шинэ боломжууд […]

Есөн сарын хөгжүүлэлтийн дараа FFmpeg 4.2 мультимедиа багц бэлэн болсон бөгөөд үүнд төрөл бүрийн мультимедиа формат (бичлэг хийх, хөрвүүлэх, […]

  • Шинэ боломжууд Linux Mint 19.2 Шанцай

    Linux Mint 19.2 нь урт хугацааны дэмжлэг үзүүлэх хувилбар бөгөөд 2023 он хүртэл дэмжигдэх болно. Энэ нь шинэчлэгдсэн хамт ирдэг програм хангамжсайжруулалт болон олон шинэ […]

  • Linux Mint 19.2 түгээлт гарсан

    Хувилбарыг танилцууллаа Линукс түгээлт Mint 19.2 нь Ubuntu 18.04 LTS багцын суурь дээр суурилсан, 2023 он хүртэл дэмжигдсэн Linux Mint 19.x салбарын хоёр дахь шинэчлэлт юм. Түгээлт нь бүрэн нийцдэг [...]

  • Алдаа засах, сайжруулсан функцийг агуулсан BIND үйлчилгээний шинэ хувилбарууд гарсан. Шинэ хувилбаруудыг хөгжүүлэгчийн вэбсайт дээрх татан авалтын хуудаснаас татаж авах боломжтой: [...]

    Exim бол Кембрижийн Их Сургуульд ашиглах зорилгоор боловсруулсан мессеж дамжуулах агент (MTA) юм Unix системүүдинтернетэд холбогдсон. Үүнийг [...] дагуу үнэ төлбөргүй авах боломжтой.

    Бараг хоёр жил хөгжүүлсний дараа Linux 0.8.0 дээр ZFS-ийн хувилбарыг танилцуулж байна файлын систем ZFS, Линукс цөмд зориулсан модуль болгон багцалсан. Модуль нь 2.6.32-аас [...] хүртэл Linux цөмүүдтэй туршигдсан.

    Интернэт протокол, архитектурыг боловсруулдаг IETF (Интернетийн инженерийн ажлын хэсэг) нь ACME (Автомат гэрчилгээний удирдлагын орчин) протоколд зориулсан RFC-г дуусгасан [...]

    Нийгэмлэгийн хяналтад байдаг, хүн бүрт үнэ төлбөргүй гэрчилгээ олгодог Let’s Encrypt ашгийн бус гэрчилгээжүүлэх байгууллага өнгөрсөн оны үр дүнг дүгнэж, 2019 оны төлөвлөгөөний талаар ярилцлаа. […]

    0

    Би мухардалд орчихлоо. Бидэнд багагүй хугацаанд ашиглаж байгаа postgres 9.2 мэдээллийн сан бий. Одоо бид сүлжээндээ гаднаас холбогдох боломжтой байх хэрэгтэй.

    Тиймээс бид гадаад IP хаягийг тохируулж, telnet-ээр алсын хостоос 5432 порт руу холбогдох боломжтой эсэхийг шалгана. Тэгэхээр энэ нь сүлжээний холболт ажиллаж байгаа, галт хана гэх мэт бүх зүйл сайн гэдгийг баталж байна.

    Би холбогдохыг оролдох үед:
    PSQL -h db.host.com -d dbname -p 5432 -U хэрэглэгч

    Би буцаж ирнэ Psql: Сервер холболтыг гэнэт хаасан.

    Би үүнийг шалгасан
    listen_addresses = "*"-г postgresql.conf-д тохируулсан

    Мөн pg_hba.conf дээр бид уншдаг мөртэй (зөвхөн туршилтын зорилгоор)
    бүх хост 0.0.0.0/0 md5

    Сонгосон өөрчлөлтийг нь шалгахын тулд би мэдээллийн санг дахин ачааллаа.
    Тиймээс энэ нь ямар ч эх сурвалжаас холбогдохыг зөвшөөрөх ёстой.

    Өгөгдлийн сангийн сервер дээрх psql хувилбар нь 9.2.14, харин клиент дээр 9.2.13.

    Ямар нэгэн санал, санаа байна уу?

    • 1 хариулт
    • Эрэмбэлэх:

      Үйл ажиллагаа

    1

    Дэлгэрэнгүй мэдээлэл авахын тулд би хэд хэдэн зүйлийг туршиж үзэхийг хүсч байна:

      Postgres tail сервер рүү нэвтэрч холбогдох үед тэнд юу болж байгааг харах боломжтой.

      psql --version-г ажиллуулж энэ нь серверийн хувилбартай таарч байгаа эсэхийг шалгаарай. (Чамайг аль хэдийн үүнийг хийсэн гэж би харж байна, гэхдээ би үүнийг хойч үедээ үлдээх болно.)

      strace psql....-г ажиллуулж энэ нь амжилтгүй болох хүртэл хэр хол байгааг хараарай.

    Энэ нь надад сүлжээний асуудал мэт сонсогдож байна. Таны ажиллаж байгаа telnet команд юу вэ? "Гадаад IP" нь AWS дээрхтэй адил сонсогдож байна. Тохиргоо алсаас хандах VPC нь олон алхам хийдэг. Таньд гаднаас нь нээлттэй өөр үйлчилгээ бий юу?

    Та мөн Postgres серверийг унтрааж, nc ашиглан 5432 дээр сонсох замаар асуудлыг шийдэж болно. Дараа нь telnet-ээр дамжуулан өгөгдөл дамжуулах боломжтой эсэхийг хараарай.

    1

    Паул, санал өгсөнд баярлалаа. Би сунгалт хийж, хувилбаруудыг шалгасан. Таны зөв байсан, би AWS-ээс холбогдохыг оролдсон. Энэ нь зөвхөн AWS-ийн нийтэлдэг IP-ийн IP-2 мужид хандахыг зөвшөөрөхийн тулд ачаалал тэнцвэржүүлэгчид ашиглаж байсан шатлал байсан нь харагдаж байна. Би irule-г идэвхгүй болгосны дараа би шууд холбогдох боломжтой болсон. Тиймээс би өөрийн EC2 инстанцийн нийтийн IP-г шалгасан бөгөөд энэ нь CIDR мэдэгдлээр дамжуулан дүрэмд бүртгэгдсэн тул энэ нь үнэхээр гайхалтай логик байх ёстой. -

    Холболт