ការបង្កើតការតភ្ជាប់ទៅតារាង postgresql ពីចម្ងាយ។ ការតភ្ជាប់ទៅ subd ។ ការកំណត់សិទ្ធិចូលប្រើមូលដ្ឋានទិន្នន័យ

0

ខ្ញុំជំពប់ជើង។ យើងមានមូលដ្ឋានមួយ។ ទិន្នន័យ postgres 9.2 ដែល​យើង​បាន​ប្រើ​មួយ​រយៈ​មក​ហើយ។ ឥឡូវនេះ យើងត្រូវតែអាចភ្ជាប់វាពីខាងក្រៅបណ្តាញរបស់យើង។

ដូច្នេះយើងកំណត់រចនាសម្ព័ន្ធអាសយដ្ឋាន IP ខាងក្រៅហើយសាកល្បងថាយើងអាចភ្ជាប់ទៅច្រក 5432 ជាមួយ ម៉ាស៊ីនពីចម្ងាយតាមរយៈ telnet ។ ដូច្នេះ​នេះ​បញ្ជាក់​ថា​ ការតភ្ជាប់បណ្តាញការងារ ជញ្ជាំងភ្លើង។ល។ ទាំងអស់ល្អ។

នៅពេលខ្ញុំព្យាយាមភ្ជាប់ជាមួយ៖
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 ចូលទៅក្នុងម៉ាស៊ីនមេ ដើម្បីមើលអ្វីដែលកំពុងកើតឡើងនៅទីនោះ នៅពេលភ្ជាប់។

    ដំណើរការ psql --version ដើម្បីប្រាកដថាវាត្រូវគ្នានឹងកំណែម៉ាស៊ីនមេ។ (ខ្ញុំឃើញថាអ្នកបានធ្វើរួចហើយ ប៉ុន្តែខ្ញុំនឹងទុកវានៅទីនេះសម្រាប់កូនចៅ។ )

    រត់ strace psql.... ដើម្បីមើលថាតើវាទៅដល់កម្រិតណាដែលបរាជ័យ។

វានៅតែស្តាប់ទៅដូចជាបញ្ហាបណ្តាញសម្រាប់ខ្ញុំ។ តើមានអ្វីកើតឡើង ពាក្យបញ្ជា telnetតើអ្នកកំពុងធ្វើការជាមួយអ្នកណា? "IP ខាងក្រៅ" ស្តាប់ទៅដូចដែលអ្នកចង់បាននៅលើ AWS ។ ការកំណត់ ការចូលប្រើពីចម្ងាយទៅ VPC មានជំហានជាច្រើន។ តើ​អ្នក​មាន​សេវា​ផ្សេង​ទៀត​ដែល​បើក​ទៅ​ខាង​ក្រៅ​ដែល​បើក​ទេ?

អ្នកក៏អាចដោះស្រាយបញ្ហាបានដោយការបិទម៉ាស៊ីនមេ Postgres ហើយប្រើ nc ដើម្បីស្តាប់នៅលើ 5432 ។ បន្ទាប់មក telnet ហើយមើលថាតើអ្នកអាចបញ្ជូនទិន្នន័យទៅមកបានដែរឬទេ។

1

Paul អរគុណសម្រាប់ការផ្ដល់យោបល់។ ខ្ញុំ​បាន​ធ្វើ​ការ​លាត​ត្រដាង និង​ពិនិត្យ​មើល​កំណែ។ ហើយអ្នកនិយាយត្រូវ ខ្ញុំបានព្យាយាមភ្ជាប់ពី AWS ។ វាប្រែថាវាជាកម្រិតដែលខ្ញុំកំពុងប្រើនៅក្នុង load balancer ដើម្បីអនុញ្ញាតឱ្យចូលប្រើជួរ IP-2 នៃ IPs ដែល AWS បោះពុម្ពផ្សាយប៉ុណ្ណោះ។ នៅពេលដែលខ្ញុំបិទ irule ខ្ញុំអាចភ្ជាប់បានភ្លាមៗ។ ដូច្នេះ នេះត្រូវតែជាតក្កវិជ្ជា surreal ចាប់តាំងពីខ្ញុំបានពិនិត្យ IP សាធារណៈនៃឧទាហរណ៍ EC2 របស់ខ្ញុំ ហើយវាពិតជាត្រូវបានចុះបញ្ជីនៅក្នុង irule តាមរយៈការជូនដំណឹង CIDR ។ -

ការគ្រប់គ្រងប្រព័ន្ធ

ប្រកាសនេះគឺ ការណែនាំខ្លីៗសម្រាប់អ្នកចាប់ផ្តើមដំបូង សម្រាប់អ្នកដែលបានដំឡើង PostgreSQL ជាលើកដំបូង។ នេះគឺជាព័ត៌មានទាំងអស់ដែលអ្នកត្រូវការដើម្បីចាប់ផ្តើមជាមួយ PostgreSQL ។

ការភ្ជាប់ទៅ DBMS

រឿងដំបូងដែលត្រូវធ្វើគឺដើម្បីទទួលបានការចូលប្រើ PostgreSQL ការចូលប្រើជាអ្នកប្រើជាន់ខ្ពស់។
ការកំណត់ការផ្ទៀងផ្ទាត់មានទីតាំងនៅក្នុងឯកសារ pg_hba.conf ។
  1. មិត្តរួម postgres ក្នុងស្រុក
បន្ទាត់នេះបង្ហាញថាអ្នកប្រើប្រាស់ Postgres អាចភ្ជាប់ទៅមូលដ្ឋានទិន្នន័យ PostgreSQL មូលដ្ឋានណាមួយតាមរយៈរន្ធ។ មិនចាំបាច់បញ្ចូលពាក្យសម្ងាត់ទេ ប្រព័ន្ធប្រតិបត្តិការនឹងបញ្ជូនឈ្មោះអ្នកប្រើប្រាស់ ហើយវានឹងត្រូវបានប្រើសម្រាប់ការផ្ទៀងផ្ទាត់។
តោះភ្ជាប់៖
  1. $ sudo -u postgres psql postgres postgres
ដើម្បីអាចភ្ជាប់តាមរយៈបណ្តាញ អ្នកត្រូវបន្ថែមបន្ទាត់ទៅ pg_hdba.conf៖
  1. # ប្រភេទនៃវិធីសាស្រ្តអាសយដ្ឋានអ្នកប្រើប្រាស់មូលដ្ឋានទិន្នន័យ
  2. hostssl ទាំងអស់ 0.0.0.0/0 md5
វិធីសាស្ត្រផ្ទៀងផ្ទាត់ md5មានន័យថា អ្នកនឹងត្រូវបញ្ចូលពាក្យសម្ងាត់ដើម្បីភ្ជាប់។ វាមិនងាយស្រួលទេប្រសិនបើអ្នកប្រើកុងសូល psql ញឹកញាប់។ ប្រសិនបើអ្នកចង់ធ្វើឱ្យសកម្មភាពមួយចំនួនដោយស្វ័យប្រវត្តិ ដំណឹងអាក្រក់គឺថា psql មិនទទួលយកពាក្យសម្ងាត់ជាអាគុយម៉ង់មួយ។ មានវិធីពីរយ៉ាងក្នុងការដោះស្រាយបញ្ហាទាំងនេះ៖ ការកំណត់អថេរបរិស្ថានសមស្រប និងការរក្សាទុកពាក្យសម្ងាត់ក្នុងឯកសារ .pgpass ពិសេស។

កំណត់អថេរបរិស្ថាន PGPASSWORD

ខ្ញុំ​នឹង​និយាយ​ភ្លាម​ថា យក​ល្អ​កុំ​ប្រើ​វិធី​នេះ​ព្រោះ​ខ្លះ ប្រព័ន្ធប្រតិបត្តិការអនុញ្ញាតឱ្យអ្នកមើល អ្នកប្រើប្រាស់ធម្មតា។ អថេរបរិស្ថានតាមរយៈ ps ។ ប៉ុន្តែប្រសិនបើអ្នកចង់បាន អ្នកត្រូវសរសេរក្នុង terminal៖
  1. នាំចេញ PGPASSWORD=mypasswd
អថេរនឹងមាននៅក្នុងវគ្គបច្ចុប្បន្ន។ ប្រសិនបើអ្នកត្រូវកំណត់អថេរសម្រាប់វគ្គទាំងអស់ នោះអ្នកត្រូវបន្ថែមបន្ទាត់ពីឧទាហរណ៍ទៅឯកសារ .bashrc ឬ .bash_profile

ការរក្សាទុកពាក្យសម្ងាត់នៅក្នុងឯកសារ .pgpass

ប្រសិនបើយើងកំពុងនិយាយអំពីលីនុច នោះឯកសារគួរតែស្ថិតនៅក្នុង $HOME (/home/username)។ មានតែម្ចាស់ (0600) ត្រូវតែមានសិទ្ធិសរសេរ និងអាន។ អ្នកត្រូវសរសេរបន្ទាត់ដូចនេះទៅកាន់ឯកសារ៖
  1. hostname:port:database:username:password
អ្នកអាចសរសេរ “*” នៅក្នុងវាលទាំងបួនដំបូង ដែលមានន័យថាគ្មានការត្រង (ការជ្រើសរើសពេញ)។

ទទួលបានព័ត៌មានជំនួយ

\? - នឹងលះបង់អ្វីៗទាំងអស់។ ពាក្យបញ្ជាដែលមានរួមជាមួយនឹងការពិពណ៌នាសង្ខេបរបស់ពួកគេ
\h - នឹងបង្ហាញបញ្ជីសំណួរដែលមានទាំងអស់
\h បង្កើត - នឹងផ្តល់ជំនួយសម្រាប់សំណើជាក់លាក់មួយ។

ការគ្រប់គ្រងអ្នកប្រើប្រាស់ DBMS

តើធ្វើដូចម្តេចដើម្បីទទួលបានបញ្ជីអ្នកប្រើប្រាស់ PostgreSQL?
  1. ឬអ្នកអាចសួរតារាង pg_user ។

ជ្រើសរើស * ពី pg_user ;

ការបង្កើតអ្នកប្រើប្រាស់ PostgreSQL ថ្មី។ ពីសែល
  1. psql នេះអាចត្រូវបានធ្វើដោយប្រើពាក្យបញ្ជា CREATE ។
បង្កើតឈ្មោះអ្នកប្រើប្រាស់ដោយប្រើពាក្យសម្ងាត់ "ពាក្យសម្ងាត់" ;
  1. ឬអ្នកអាចប្រើស្ថានីយ។
អ្នកបង្កើត -S -D -R -P ឈ្មោះអ្នកប្រើ

អ្នកនឹងត្រូវបានជម្រុញឱ្យបញ្ចូលពាក្យសម្ងាត់។

  1. ការផ្លាស់ប្តូរពាក្យសម្ងាត់អ្នកប្រើប្រាស់

ផ្លាស់ប្តូរឈ្មោះអ្នកប្រើប្រាស់ដោយប្រើលេខសម្ងាត់ "ពាក្យសម្ងាត់" ;

ការផ្លាស់ប្តូរតួនាទីអ្នកប្រើប្រាស់
  1. ដើម្បីផ្តល់ការអនុញ្ញាតអោយអ្នកប្រើប្រាស់បង្កើតមូលដ្ឋានទិន្នន័យ សូមដំណើរការសំណួរខាងក្រោម៖

ឈ្មោះអ្នកប្រើ ALTER ROLE ជាមួយ CREATEDB ;

ការគ្រប់គ្រងមូលដ្ឋានទិន្នន័យ
  1. ការបង្ហាញបញ្ជីមូលដ្ឋានទិន្នន័យនៅក្នុងស្ថានីយ psql៖ ដូចគ្នាពីស្ថានីយលីនុច៖
psql -l
  1. ការបង្កើតមូលដ្ឋានទិន្នន័យពី psql (PostgreSQL Terminal)
បង្កើតមូលដ្ឋានទិន្នន័យ dbname ម្ចាស់ dbadmin ; ការបង្កើតមូលដ្ឋានថ្មី។
  1. ទិន្នន័យដោយប្រើស្ថានីយ៖

បង្កើតb -O ឈ្មោះអ្នកប្រើ dbname;

ការកំណត់សិទ្ធិចូលប្រើមូលដ្ឋានទិន្នន័យ ប្រសិនបើអ្នកប្រើជាម្ចាស់នៃមូលដ្ឋានទិន្នន័យ នោះគាត់មានសិទ្ធិទាំងអស់។ ប៉ុន្តែប្រសិនបើអ្នកចង់ផ្តល់សិទ្ធិចូលប្រើទៅកាន់អ្នកប្រើប្រាស់ផ្សេងទៀត អ្នកអាចធ្វើវាដោយប្រើពាក្យបញ្ជា GRANT ។ សំណួរខាងក្រោមនឹងអនុញ្ញាតឱ្យអ្នកប្រើភ្ជាប់ទៅមូលដ្ឋានទិន្នន័យ។ ប៉ុន្តែកុំភ្លេចអំពីឯកសារកំណត់រចនាសម្ព័ន្ធ
  1. pg_hba.conf វាក៏ត្រូវតែមានការអនុញ្ញាតការតភ្ជាប់សមរម្យផងដែរ។

ផ្តល់ការភ្ជាប់លើ DATABASE dbname ទៅ dbadmin ; PostgreSQL គឺជា DBMS ទំនាក់ទំនងវត្ថុឆ្លងវេទិកាជាមួយនឹងការបើកចំហកូដប្រភព . អត្ថបទនេះនឹងបង្ហាញអ្នកពីរបៀបដំឡើង PostgreSQL នៅក្នុងអ៊ូប៊ុនទូលីនុច ភ្ជាប់ទៅវាហើយអនុវត្តគូសំណួរ SQL សាមញ្ញ

ក៏ដូចជារបៀបរៀបចំការបម្រុងទុក។

ដើម្បីដំឡើង PostgreSQL 9.2 នៅលើ Ubuntu 12.10 សូមដំណើរការពាក្យបញ្ជាខាងក្រោម៖
sudo apt-add-repository ppa: pitti/ postgresql
sudo apt-get ធ្វើបច្ចុប្បន្នភាព

sudo apt-get ដំឡើង postgresql-9.2

តោះព្យាយាមធ្វើការជាមួយ DBMS តាមរយៈសែល៖

sudo -u postgres psql

តោះបង្កើតមូលដ្ឋានទិន្នន័យសាកល្បង និងអ្នកប្រើប្រាស់សាកល្បង៖
បង្កើត DATABASE test_database;
បង្កើត USER test_user ជាមួយនឹងពាក្យសម្ងាត់ "qwerty" ;

ផ្តល់ឱ្យទាំងអស់នៅលើ DATABASE test_database ដល់ test_user;

ដើម្បីចេញពីសែល បញ្ចូលពាក្យបញ្ជា \q ។

psql -h localhost test_database test_user

តោះបង្កើតតារាងថ្មី៖

បង្កើត SEQUENCE user_ids;
បង្កើតអ្នកប្រើប្រាស់តារាង (
id INTEGER PRIMARY KEY DEFAULT NEXTVAL ("user_ids") ,
ចូល CHAR(64),
ពាក្យសម្ងាត់ CHAR(64));

សូមចំណាំថា មិនដូច DBMSs ផ្សេងទៀតទេ PostgreSQL មិនមានជួរឈរដែលមានលក្ខណៈសម្បត្តិ auto_increment ទេ។ ផ្ទុយទៅវិញ Postgres ប្រើលំដាប់។ បើក នៅពេលនេះវាគ្រប់គ្រាន់ដើម្បីដឹងថាការប្រើមុខងារបន្ទាប់យើងអាចទទួលបាន លេខពិសេសសម្រាប់លំដាប់ដែលបានផ្តល់ឱ្យ៖

ជ្រើសរើស NEXTVAL ("user_ids") ;

ដោយកំណត់តម្លៃលំនាំដើមសម្រាប់វាលលេខសម្គាល់នៃតារាងអ្នកប្រើប្រាស់ NEXTVAL("user_ids")យើងសម្រេចបាននូវឥទ្ធិពលដូចគ្នាដែល auto_increment ផ្តល់ឱ្យ។ នៅពេលបន្ថែមកំណត់ត្រាថ្មីទៅក្នុងតារាង យើងមិនចាំបាច់បញ្ជាក់លេខសម្គាល់នោះទេ ព្រោះលេខសម្គាល់តែមួយគត់នឹងត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិ។ តារាងច្រើនអាចប្រើលំដាប់ដូចគ្នា។ វិធីនេះយើងអាចធានាថាតម្លៃនៃវាលមួយចំនួននៅក្នុងតារាងទាំងនេះមិនត្រួតលើគ្នា។ ក្នុងន័យនេះ លំដាប់គឺមានភាពបត់បែនជាង auto_increment ។

តារាងដូចគ្នាអាចត្រូវបានបង្កើតដោយប្រើពាក្យបញ្ជាតែមួយ៖

បង្កើតអ្នកប្រើប្រាស់តារាង 2 (
លេខសម្គាល់ SERIAL PRIMARY KEY ,
ចូល CHAR(64),
ពាក្យសម្ងាត់ CHAR(64));

ក្នុងករណីនេះ លំដាប់សម្រាប់វាលលេខសម្គាល់ត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិ។

ឥឡូវនេះដោយប្រើពាក្យបញ្ជា \d អ្នកអាចឃើញបញ្ជីតារាងដែលមានទាំងអស់ ហើយដោយប្រើ \d អ្នកប្រើប្រាស់ អ្នកអាចឃើញការពិពណ៌នានៃតារាងអ្នកប្រើប្រាស់។ ប្រសិនបើអ្នកមិនទទួលបានព័ត៌មានដែលអ្នកកំពុងស្វែងរកទេ សូមសាកល្បង \d+ ជំនួសឱ្យ \d ។ អ្នកអាចទទួលបានបញ្ជីនៃមូលដ្ឋានទិន្នន័យដោយប្រើពាក្យបញ្ជា \l ហើយប្តូរទៅមូលដ្ឋានទិន្នន័យជាក់លាក់ដោយប្រើពាក្យបញ្ជា \c dbname ។ ដើម្បីបង្ហាញជំនួយពាក្យបញ្ជា និយាយថា \?

. វាជារឿងសំខាន់ក្នុងការកត់សម្គាល់ថានៅក្នុង PostgreSQL តាមលំនាំដើម ឈ្មោះតារាង និងជួរឈរត្រូវបានបោះទៅអក្សរតូច

. ប្រសិនបើអ្នកមិនចង់បានអាកប្បកិរិយានេះទេ អ្នកអាចប្រើសញ្ញាសម្រង់ទ្វេ៖

បង្កើតតារាង "តារាងផ្សេងទៀត" ("តម្លៃខ្លះ" VARCHAR (64) );

លក្ខណៈពិសេសមួយទៀតរបស់ PostgreSQL ដែលអាចបណ្តាលឱ្យមានការលំបាកនៅពេលចាប់ផ្តើមធ្វើការជាមួយ DBMS នេះត្រូវបានគេហៅថា "គ្រោងការណ៍" ។ គ្រោងការណ៍គឺជាអ្វីមួយដូចជាលំហឈ្មោះសម្រាប់តារាង ដូចជាថតដែលមានតារាងនៅក្នុងមូលដ្ឋានទិន្នន័យ។

ការបង្កើតគ្រោងការណ៍៖

បង្កើតការកក់ SCHEMA;

ប្តូរទៅគ្រោងការណ៍៖

អ្នកអាចមើលបញ្ជីគ្រោងការណ៍ដែលមានស្រាប់ដោយប្រើពាក្យបញ្ជា \dn ។ គ្រោងការណ៍លំនាំដើមត្រូវបានដាក់ឈ្មោះជាសាធារណៈ។ ជាគោលការណ៍ អ្នកអាចប្រើ PostgreSQL ដោយជោគជ័យ ដោយមិនដឹងអំពីអត្ថិភាពនៃគ្រោងការណ៍។ ប៉ុន្តែនៅពេលធ្វើការជាមួយកូដកេរ្តិ៍ដំណែល និងនៅក្នុងករណីគែមមួយចំនួន ការដឹងអំពីគ្រោងការណ៍អាចមានប្រយោជន៍ខ្លាំងណាស់។

បើមិនដូច្នេះទេ ការធ្វើការជាមួយ PostgreSQL មិនខុសពីការធ្វើការជាមួយ DBMS ផ្សេងទៀតទេ៖

បញ្ចូលទៅក្នុងអ្នកប្រើប្រាស់ (ចូល ពាក្យសម្ងាត់)
VALUES ("afiskon", "123456" );
ជ្រើសរើស * ពីអ្នកប្រើប្រាស់;

ប្រសិនបើអ្នកឥឡូវនេះព្យាយាមភ្ជាប់ទៅ Postgres ពីម៉ាស៊ីនផ្សេងទៀត អ្នកនឹងបរាជ័យ៖

psql -h 192.168.0.1 test_database test_user

Psql៖ មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេ៖ ការតភ្ជាប់ត្រូវបានបដិសេធ
តើម៉ាស៊ីនមេដែលកំពុងដំណើរការនៅលើម៉ាស៊ីន "192.168.0.1" និងទទួលយក
ការភ្ជាប់ TCP/IP នៅលើច្រក 5432?

ដើម្បីដោះស្រាយបញ្ហានេះ សូមបន្ថែមបន្ទាត់៖

listen_addresses = "ម៉ាស៊ីនមេ, 192.168.0.1"

...ទៅកាន់ឯកសារ /etc/postgresql/9.2/main/postgresql.conf ផងដែរ។