PostgreSQL bilan ishlashni boshlash. Postgresql masofaviy ulanish Ma'lumotlar bazasi foydalanuvchilarini boshqarish

PostgreSQL - ochiq platformali ob'yektli ma'lumotlar bazasi manba kodi. Ushbu maqolada siz PostgreSQL-ni Ubuntu Linux-ga qanday o'rnatishni, unga ulanishni va bir nechta oddiy SQL so'rovlarini bajarishni, shuningdek, zaxira nusxalarini qanday o'rnatishni o'rganasiz.

PostgreSQL 9.2 ni Ubuntu 12.10 ga o'rnatish uchun quyidagi buyruqlarni bajaring:

sudo apt-add-repository ppa: pitti/postgresql
sudo apt-get yangilanishi
sudo apt-get install postgresql-9.2

Keling, DBMS bilan qobiq orqali ishlashga harakat qilaylik:

sudo -u postgres psql

Test ma’lumotlar bazasi va test foydalanuvchisini yaratamiz:

MA'LUMOTLAR BAZASINI YARATING test_ma'lumotlar bazasi;
"qwerty" paroli BILAN FOYDALANUVCHI test_userini YARATING;
test_ma'lumotlar bazasidagi barcha ma'lumotlar bazasini test_foydalanuvchisiga BERING;

Qobiqdan chiqish uchun \q buyrug'ini kiriting.

Keling, test_user nomidan yaratilgan ma'lumotlar bazasi bilan ishlashga harakat qilaylik:

psql -h localhost test_ma'lumotlar bazasi test_user

Keling, yangi jadval yaratamiz:

SEQUENCE foydalanuvchi identifikatorlarini yaratish;
JADVAL YARATISH foydalanuvchilari (
id INTEGER PRIMARY KEY DEFAULT NEXTVAL ("user_ids" ),
login CHAR(64) ,
parol CHAR(64));

Shuni esda tutingki, ba'zi boshqa DBMSlardan farqli o'laroq, PostgreSQLda auto_increment xususiyatiga ega ustunlar mavjud emas. Buning o'rniga, Postgres ketma-ketliklardan foydalanadi. Yoniq hozirgi paytda Nextval funksiyasidan foydalanib, berilgan ketma-ketlik uchun noyob raqamlarni olishimiz mumkinligini bilish kifoya:

NEXTVAL ni tanlang (“user_ids” );

Foydalanuvchilar jadvalining id maydoni uchun standart qiymatni belgilash orqali NEXTVAL("foydalanuvchi_idlari"), biz auto_increment beradigan effektga erishdik. Jadvalga yangi yozuvlarni qo'shganda, biz identifikatorni ko'rsatishimiz shart emas, chunki noyob identifikator avtomatik ravishda yaratiladi. Bir nechta jadvallar bir xil ketma-ketlikni ishlatishi mumkin. Shunday qilib, biz ushbu jadvallardagi ba'zi maydonlarning qiymatlari bir-biriga mos kelmasligiga kafolat bera olamiz. Shu ma'noda, ketma-ketliklar auto_incrementga qaraganda ancha moslashuvchan.

Xuddi shu jadval faqat bitta buyruq yordamida yaratilishi mumkin:

JADVAL YARATISH foydalanuvchilari2 (
id SERIAL ASOSIY KALT,
login CHAR(64) ,
parol CHAR(64));

Bunday holda, id maydoni uchun ketma-ketlik avtomatik ravishda yaratiladi.

Endi \d buyrug'i yordamida siz barcha mavjud jadvallar ro'yxatini ko'rishingiz mumkin va \d foydalanuvchilari yordamida siz foydalanuvchilar jadvalining tavsifini ko'rishingiz mumkin. Agar siz qidirayotgan ma'lumotni olmasangiz, \d o'rniga \d+ ni sinab ko'ring. Siz \l buyrug'i bilan ma'lumotlar bazalari ro'yxatini olishingiz va \c dbname buyrug'i bilan ma'lum bir ma'lumotlar bazasiga o'tishingiz mumkin. Buyruq yordamini ko'rsatish uchun \?

.

Shuni ta'kidlash kerakki, PostgreSQL sukut bo'yicha jadval va ustun nomlarini kichik harflarga o'zgartiradi. Agar siz bunday xatti-harakatni xohlamasangiz, ikkita tirnoqdan foydalanishingiz mumkin:

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

PostgreSQL-ning ushbu DBMS bilan ishlashni boshlashda qiyinchiliklarga olib kelishi mumkin bo'lgan yana bir xususiyati bu "sxemalar". Sxema - bu jadvallar uchun nom maydoni, ma'lumotlar bazasi ichidagi jadvallari bo'lgan katalog kabi narsa.

Sxema yaratish:

SCHEMA buyurtmalarini yaratish;

Sxemaga o'tish:

bandlovlar uchun search_path SOZLASH;

Siz \dn buyrug'i yordamida mavjud sxemalar ro'yxatini ko'rishingiz mumkin. Standart sxema ommaviy deb nomlanadi. Printsipial jihatdan siz PostgreSQL-dan sxemalar mavjudligini bilmasdan muvaffaqiyatli foydalanishingiz mumkin. Ammo eski kod bilan ishlashda va ba'zi bir chekka holatlarda sxemalar haqida bilish juda foydali bo'lishi mumkin.

Aks holda, PostgreSQL bilan ishlash boshqa relyatsion DBMS bilan ishlashdan unchalik farq qilmaydi:
INSERT INTO foydalanuvchilar (login, parol)
QIMMATLAR ("afiskon" , "123456" );

Foydalanuvchilardan * TANLASH;

Agar siz Postgres-ga boshqa mashinadan ulanishga harakat qilsangiz, muvaffaqiyatsiz bo'ladi:

psql -h 192.168.0.1 test_ma'lumotlar bazasi test_foydalanuvchisi
Psql: serverga ulanib bo'lmadi: ulanish rad etildi
Server "192.168.0.1" xostida ishlayaptimi va qabul qilmoqda

5432 portdagi TCP/IP ulanishlari?

Buni tuzatish uchun qatorni qo'shing:

listen_addresses = "localhost,192.168.0.1"

... /etc/postgresql/9.2/main/postgresql.conf fayliga ham. : Diqqat Agar siz Windows operatsion tizimida ishlayotgan bo'lsangiz va hali PostgreSQL va Debit Plus V12-ni o'rnatmagan bo'lsangiz, Debit Plus V12 yig'ilishini yuklab olish sahifasidan oldindan o'rnatilgan PostgreSQL DBMS va ulangan ma'lumotlar bazasi (Ukraina uchun asosiy konfiguratsiya bilan) yuklab olishingiz mumkin. . Aks holda, avval PostgreSQL DBMSni o'rnatishingiz kerak va dasturiy ta'minot to'plami

"Debit Plus V12", shundan so'ng siz ushbu ko'rsatmalarga amal qilgan holda ulanishni o'rnatishingiz va PostgreSQL ma'lumotlar bazasini import qilishingiz mumkin.

    PostgreSQL ma'lumotlar bazasini ulash uchun siz quyidagi amallarni bajarishingiz kerak: "Debit Plus V12" ni ishga tushiring va qo'shing (kontekst menyusi"Yangisini qo'shish")

    "Mavjud ro'yxatga qo'shish" katagiga belgi qo'ying.

"DBMS" - POSTGRE.

"Ma'lumotlar bazasi serveri" - localhost.

"Ma'lumotlar bazasi nomi" - PostgreSQL DBMS dan ma'lumotlar bazasi nomini lotin harflari (kichik harflar) bilan belgilang.

Eslatma: Odatda bitta tayanch ishlatiladi. Maxsus maqsadlar uchun ma'lumotlar bazasini bir nechtaga bo'lish mumkin, keyin siz "Bir nechta ma'lumotlar bazasidan foydalanish" yonidagi katakchani belgilashingiz kerak, "Keyingi" tugmasini bosing va "teglar" ning jismoniy ma'lumotlar bazalariga mos kelishini ko'rsating. Bu, masalan, bir nechta korxonalarning ma'lumotlar bazalari bir xil ma'lumotnomalarga (kontragentlar, ob'ektlar va boshqalar) murojaat qilsa, kerak bo'lishi mumkin. Bu ish boshqa muhokama qilinmaydi.

"Sozlamalar katalogi" - PostgreSQL uchun ma'lumotlar bazasi sozlamalariga yo'lni belgilang (drive\DebetPlusV12\base\pgdpbase).

"Bajarildi" tugmasini bosish orqali o'zgartirishlaringizni saqlang.

    pgAdmin (PostgreSQL DBMS ma'muri) ni ishga tushiring, server qo'shing (Fayl/Server qo'shish...) va yangi ma'lumotlar bazasini qo'shing ("Yangi ma'lumotlar bazasi..." menyusi).

Xost maydoniga server nomini, localhostni kiriting, qolgan maydonlarni xohlagancha to'ldiring.

"Ism" maydoniga ma'lumotlar bazasi nomini kiriting ("Debit Plus V12" ma'lumotlar bazasiga ulanish sozlamalarida "Server" maydoniga kiritilgan bilan bir xil).

    Ma'lumotlar bazasini arxivdan import qilish uchun "Restore..." menyusidan foydalaning

dpbase.bakup ma'lumotlar bazasi arxiviga yo'lni belgilang (drive\DebetPlusV12\base\pgdpbase).

    Siz sukut bo'yicha Debit Plus V12 da administrator bo'lgan dpadmin foydalanuvchisini qo'shishingiz mumkin (parolsiz).

Ushbu foydalanuvchiga barcha huquqlarni tayinlang.

Eslatma : Siz dpadmin foydalanuvchisini qo'sha olmaysiz, keyin ma'lumotlar bazasini faollashtirishda siz postgres administrator nomini kiritishingiz kerak bo'ladi.

Ma'lumotlar bazalari ro'yxatini yangilang ("Yangilash" menyusi).

Eslatma : Agar siz foydalanuvchiga "Superuser" huquqlarini berishni xohlamasangiz, "Jadvallar" va "Ko'rishlar" ga huquqlarni tayinlang. Buning uchun tegishli ob'ektni tanlang va kontekst menyusidagi "Grant Wizard" bandini tanlang.

"Tanlash" yorlig'ida "Hammasini tekshirish" tugmasini bosing va "Imtiyozlar" yorlig'ida "HAMMA" ni belgilang va "Qo'shish/O'zgartirish" tugmasini bosing. O'zgartirishlaringizni saqlang.

    Debit Plus V12 dasturida ma'lumotlar bazasiga ulanish sozlamalarini faollashtiring ("Faol qilish" kontekst menyusi).

Tizim ma'lumotlar bazasiga ulanish uchun parol so'raydi. Ha ni bosing.

Diqqat! Agar bunday xabar paydo bo'lmasa, "Asboblar" / "Ma'lumotlar bazasi tuzilmalarini yangilash" menyusini tanlash orqali ma'lumotlar bazasi tuzilmalarini yangilashni boshlang.

Natijada, quyidagi oyna paydo bo'ladi:

Barcha tasdiqlash katakchalarini sukut bo'yicha qoldiring (barcha ma'lumotlar bazasi jadvallari uchun "Qayta indeks" ustunida tasdiq belgilari bo'lishi kerak).

O'zgartirishni tugatgandan so'ng siz ishlashni boshlashingiz mumkin.

    "Debit Plus V12" ni ishga tushiring va yangi bazani qo'shing ("Yangisini qo'shish" kontekst menyusi).

    "Mavjud ro'yxatga qo'shish" maydoniga belgi qo'ying:

Birinchi maydonda ma'lumotlar bazasi uchun o'zboshimchalik nomini kiriting (har bir ishlaydigan kompyuterda nom har xil bo'lishi mumkin).

"DBMS" - POSTGRE.

"Ma'lumotlar bazasi serveri" - serverning nomi yoki IP-manzili.

"Ma'lumotlar bazasi server porti" - ma'lumotlar bazasi serveri portini belgilang, sukut bo'yicha 5432.

"Ma'lumotlar bazasi nomi" - ma'lumotlar bazasi nomini kichik lotin harflari bilan kiriting.

"Ma'lumotlar bazasi sxemasi nomi" - dpbase.

Faqat "Debit Plus avtorizatsiyasidan foydalanish" katagiga belgi qo'ying.

"Sozlamalar katalogi" - PostgreSQL uchun ma'lumotlar bazasi sozlamalariga yo'lni belgilang (tarmoq yo'li\DebetPlusV12\base\pgdpbase).

O'zgartirishlaringizni "Finish" tugmasini bosish orqali saqlang va keyin ma'lumotlar bazasini faollashtiring.

    Ishga tushirish parametrlarini o'rnating (bosh menyu "Sozlamalar" / "Ishga tushirish parametrlari")

Ko'rsatilgan oynada "Sozlamalarni o'zgartirish uchun parol" maydoniga 150301 parolini kiriting va "Qabul qilish" tugmasini bosing.

Serverdagi JDebet jildiga yo'lni belgilang va saqlash tugmasini bosing. Ma'lumotlar bazasini faollashtiring va siz ishlashni boshlashingiz mumkin.

Sudo yordam dasturida boshqa foydalanuvchilar nomidan buyruqlar bajarilishini tashkil qilish uchun foydalaniladigan zaiflik (CVE-2019-18634) aniqlandi, bu tizimdagi imtiyozlaringizni oshirish imkonini beradi. Muammo […]

WordPress 5.3-ning chiqarilishi WordPress 5.0-da taqdim etilgan blok muharririni yangi blok, yanada intuitiv shovqin va yaxshilangan foydalanish imkoniyati bilan yaxshilaydi va kengaytiradi. Muharrirdagi yangi xususiyatlar […]

To'qqiz oylik ishlab chiqishdan so'ng FFmpeg 4.2 multimedia to'plami mavjud bo'lib, u turli multimedia formatlarida (yozuv, konvertatsiya qilish va [...]) operatsiyalar uchun ilovalar to'plami va kutubxonalar to'plamini o'z ichiga oladi

  • Yangi xususiyatlar Linux Mint 19.2 dolchin

    Linux Mint 19.2 uzoq muddatli qo'llab-quvvatlash versiyasi bo'lib, 2023 yilgacha qo'llab-quvvatlanadi. U yangilangan bilan birga keladi dasturiy ta'minot va yaxshilanishlar va ko'plab yangi […]

  • Linux Mint 19.2 tarqatish chiqarildi

    Chiqarish taqdim etildi Linux tarqatish Mint 19.2, Linux Mint 19.x filialining ikkinchi yangilanishi, Ubuntu 18.04 LTS paket bazasiga asoslangan va 2023 yilgacha qo'llab-quvvatlanadi. Tarqatish to'liq mos keladi [...]

  • Yangi BIND xizmati relizlari mavjud bo'lib, ularda xatoliklar tuzatilgan va xususiyatlar yaxshilangan. Yangi nashrlarni ishlab chiquvchining veb-saytidagi yuklab olishlar sahifasidan yuklab olish mumkin: [...]

    Exim - Kembrij universitetida foydalanish uchun ishlab chiqilgan xabarlarni uzatish agenti (MTA). Unix tizimlari Internetga ulangan. [...] ga muvofiq bepul mavjud.

    Deyarli ikki yillik rivojlanishdan so'ng, Linux 0.8.0-da ZFS-ning chiqarilishi taqdim etildi, amalga oshirildi fayl tizimi ZFS, Linux yadrosi uchun modul sifatida paketlangan. Modul Linux yadrolari bilan 2.6.32 dan [...]

    Internet protokollari va arxitekturasini ishlab chiqaruvchi IETF (Internet Engineering Task Force) ACME (Automatic Certificate Management Environment) protokoli uchun RFC ni yakunladi [...]

    Jamiyat tomonidan boshqariladigan va sertifikatlarni hammaga bepul taqdim etuvchi Let’s Encrypt notijorat sertifikatlashtirish organi o‘tgan yil yakunlarini sarhisob qildi va 2019 yilgi rejalar haqida gapirdi. […]

    0

    Men qotib qoldim. Bizda postgres 9.2 ma'lumotlar bazasi mavjud bo'lib, biz ma'lum vaqtdan beri foydalanamiz. Endi biz unga tarmog'imizdan tashqaridan ulanish imkoniyatiga ega bo'lishimiz kerak.

    Shunday qilib, biz tashqi IP-manzilni sozlaymiz va telnet orqali masofaviy xostdan 5432-portga ulanishimiz mumkinligini tekshiramiz. Shunday qilib, bu tarmoq ulanishi ishlayotganligini, xavfsizlik devorlari va hokazolarning hammasi yaxshi ekanligini isbotlaydi.

    Men ulanishga harakat qilganimda:
    PSQL -h db.host.com -d dbname -p 5432 -U foydalanuvchisi

    Men qaytib kelaman Psql: Server kutilmaganda ulanishni yopdi.

    Men buni tekshirdim
    listen_addresses = "*" postgresql.conf da o'rnatiladi

    Va pg_hba.conf da bizda o'qiydigan qator mavjud (faqat sinov uchun)
    barcha mezbon 0.0.0.0/0 md5

    Va tanlangan o'zgarishlarni sinab ko'rish uchun ma'lumotlar bazasini qayta yukladim.
    Shunday qilib, bu har qanday manbadan ulanishga ruxsat berishi kerak.

    Ma'lumotlar bazasi serverida psql versiyasi 9.2.14, mijozda esa 9.2.13.

    Har qanday taklif yoki g'oyalar?

    • 1 javob
    • Saralash:

      Faoliyat

    1

    Qo'shimcha ma'lumot olish uchun men bir nechta narsalarni sinab ko'rmoqchiman:

      Postgres tail ulanganda u yerda nima sodir bo‘layotganini ko‘rish uchun serverga kiring.

      Server versiyasiga ko'proq yoki kamroq mos kelishiga ishonch hosil qilish uchun psql --version ni ishga tushiring. (Ko'ryapmanki, siz buni allaqachon qilgansiz, lekin men buni avlodlar uchun shu erda qoldiraman.)

      Muvaffaqiyatsizlikka qanchalik borishini ko'rish uchun strace psql-ni ishga tushiring.

    Bu men uchun hali ham tarmoq muammosi kabi ko'rinadi. Siz ishlayotgan telnet buyrug'i nima? “Tashqi IP” AWS’dagi kabi eshitiladi. Sozlamalar masofaviy kirish VPC ko'p qadamlarni oladi. Sizda tashqarida ochiq bo'lgan boshqa xizmatlar bormi?

    Bundan tashqari, Postgres serverini o'chirish va 5432 ni tinglash uchun nc dan foydalanish orqali muammolarni bartaraf etishingiz mumkin. Keyin telnet-ga o'ting va ma'lumotlarni oldinga va orqaga yuborishingiz mumkinligini tekshiring.

    1

    Pol, takliflar uchun rahmat. Men cho'zdim va versiyalarni tekshirdim. Va siz haqsiz, men AWS-dan ulanishga harakat qildim. Ma'lum bo'lishicha, men AWS nashr etadigan IP-2 IP diapazonlariga kirishga ruxsat berish uchun yukni muvozanatlashda ishlatgan darajam edi. Irule-ni o'chirib qo'yganimda, darhol ulanishga muvaffaq bo'ldim. Demak, bu g'ayrioddiy mantiq bo'lishi kerak, chunki men EC2 instansiyasining umumiy IP-manzilini tekshirdim va u haqiqatan ham CIDR bildirishnomasi orqali irule ro'yxatiga kiritilgan. -

    Ulanish