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 ។
- មិត្តរួម postgres ក្នុងស្រុក
តោះភ្ជាប់៖
- $ sudo -u postgres psql postgres postgres
- # ប្រភេទនៃវិធីសាស្រ្តអាសយដ្ឋានអ្នកប្រើប្រាស់មូលដ្ឋានទិន្នន័យ
- hostssl ទាំងអស់ 0.0.0.0/0 md5
កំណត់អថេរបរិស្ថាន PGPASSWORD
ខ្ញុំនឹងនិយាយភ្លាមថា យកល្អកុំប្រើវិធីនេះព្រោះខ្លះ ប្រព័ន្ធប្រតិបត្តិការអនុញ្ញាតឱ្យអ្នកមើល អ្នកប្រើប្រាស់ធម្មតា។ អថេរបរិស្ថានតាមរយៈ ps ។ ប៉ុន្តែប្រសិនបើអ្នកចង់បាន អ្នកត្រូវសរសេរក្នុង terminal៖- នាំចេញ PGPASSWORD=mypasswd
ការរក្សាទុកពាក្យសម្ងាត់នៅក្នុងឯកសារ .pgpass
ប្រសិនបើយើងកំពុងនិយាយអំពីលីនុច នោះឯកសារគួរតែស្ថិតនៅក្នុង $HOME (/home/username)។ មានតែម្ចាស់ (0600) ត្រូវតែមានសិទ្ធិសរសេរ និងអាន។ អ្នកត្រូវសរសេរបន្ទាត់ដូចនេះទៅកាន់ឯកសារ៖- hostname:port:database:username:password
ទទួលបានព័ត៌មានជំនួយ
\? - នឹងលះបង់អ្វីៗទាំងអស់។ ពាក្យបញ្ជាដែលមានរួមជាមួយនឹងការពិពណ៌នាសង្ខេបរបស់ពួកគេ\h - នឹងបង្ហាញបញ្ជីសំណួរដែលមានទាំងអស់
\h បង្កើត - នឹងផ្តល់ជំនួយសម្រាប់សំណើជាក់លាក់មួយ។
ការគ្រប់គ្រងអ្នកប្រើប្រាស់ DBMS
តើធ្វើដូចម្តេចដើម្បីទទួលបានបញ្ជីអ្នកប្រើប្រាស់ PostgreSQL?- ឬអ្នកអាចសួរតារាង pg_user ។
ជ្រើសរើស * ពី pg_user ;
ការបង្កើតអ្នកប្រើប្រាស់ PostgreSQL ថ្មី។ ពីសែល- psql នេះអាចត្រូវបានធ្វើដោយប្រើពាក្យបញ្ជា CREATE ។
- ឬអ្នកអាចប្រើស្ថានីយ។
អ្នកនឹងត្រូវបានជម្រុញឱ្យបញ្ចូលពាក្យសម្ងាត់។
- ការផ្លាស់ប្តូរពាក្យសម្ងាត់អ្នកប្រើប្រាស់
ផ្លាស់ប្តូរឈ្មោះអ្នកប្រើប្រាស់ដោយប្រើលេខសម្ងាត់ "ពាក្យសម្ងាត់" ;
ការផ្លាស់ប្តូរតួនាទីអ្នកប្រើប្រាស់- ដើម្បីផ្តល់ការអនុញ្ញាតអោយអ្នកប្រើប្រាស់បង្កើតមូលដ្ឋានទិន្នន័យ សូមដំណើរការសំណួរខាងក្រោម៖
ឈ្មោះអ្នកប្រើ ALTER ROLE ជាមួយ CREATEDB ;
ការគ្រប់គ្រងមូលដ្ឋានទិន្នន័យ- ការបង្ហាញបញ្ជីមូលដ្ឋានទិន្នន័យនៅក្នុងស្ថានីយ psql៖ ដូចគ្នាពីស្ថានីយលីនុច៖
- ការបង្កើតមូលដ្ឋានទិន្នន័យពី psql (PostgreSQL Terminal)
- ទិន្នន័យដោយប្រើស្ថានីយ៖
បង្កើតb -O ឈ្មោះអ្នកប្រើ dbname;
ការកំណត់សិទ្ធិចូលប្រើមូលដ្ឋានទិន្នន័យ ប្រសិនបើអ្នកប្រើជាម្ចាស់នៃមូលដ្ឋានទិន្នន័យ នោះគាត់មានសិទ្ធិទាំងអស់។ ប៉ុន្តែប្រសិនបើអ្នកចង់ផ្តល់សិទ្ធិចូលប្រើទៅកាន់អ្នកប្រើប្រាស់ផ្សេងទៀត អ្នកអាចធ្វើវាដោយប្រើពាក្យបញ្ជា GRANT ។ សំណួរខាងក្រោមនឹងអនុញ្ញាតឱ្យអ្នកប្រើភ្ជាប់ទៅមូលដ្ឋានទិន្នន័យ។ ប៉ុន្តែកុំភ្លេចអំពីឯកសារកំណត់រចនាសម្ព័ន្ធ- 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 ផងដែរ។