postgreSQLÀÇ JDBC È°¿ëÇϱâ <author>ÁÖÈ¿½Ä <htmlurl url="mailto:nogadax@kldp.org" name="nogadax@kldp.org"> <date>2000³â 6¿ù 15ÀÏ <abstract>ÀÌ ¹®¼­´Â "Apache-JServ ¿¡ postgreSQL ¿¬µ¿Çϱâ"¶ó´Â Á¦¸ñÀÇ ¹®¼­¸¦ ´ëÆø ¼öÁ¤, º¸¿ÏÇÑ °ÍÀÌ´Ù. ¶ÇÇÑ ¼­¹ö Ŭ¶óÀ̾ðÆ®¿¡¼­ JDBC¸¦ ¼³Á¤ÇÏ´Â »çÇ×µµ Ãß°¡ÇÏ¿´´Ù. ÀÌ ¹®¼­´Â Æ÷½ºÆ®±×·¹½ºÀÇ JDBC¸¦ È°¿ëÇÏ´Â ¹æ¹ýÀ» Å©°Ô µÎ°¡Áö·Î ³ª´©¾î ¼³¸íÇÑ´Ù. ù ¹ø °´Â postgreSQLÀ» DB ¼­¹ö·Î ÇÏ°í À©µµ¿ì( Window 98 )¸¦ Ŭ¶óÀ̾ðÆ®·Î ÇÒ¶§ JDBCÀÇ ¼³Á¤»çÇ׿¡ ´ëÇØ ¼³¸íÇÑ´Ù. µÎ ¹ø°´Â Jserv¸¦ Ãß°¡ÇÑ Apache¿¡ DB ¼­¹ö·Î¼­ postgreSQL À» ¿¬µ¿Çϱâ À§ÇØ JDBCÀÇ ¼³Á¤ »çÇ׵ ´ëÇØ ¼³¸íÇÑ´Ù.</abstract> <toc> <sect>Áغñ »çÇ× <p>¼³Á¤ ¹× Å×½ºÆ®¿¡ ¾Õ¼­ ±âº»ÀûÀ¸·Î ÁغñµÇ¾î¾ß ÇÒ »çÇ×ÀÌ ÀÖ´Ù. ÀÌ¿¡ ´ëÇÑ »çÇ×Àº <url url="http://www.kldp.org" name="http://www.kldp.org"> ¸¦ ÂüÁ¶Çϰųª ±âŸ ¹®¼­¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. ´ÙÀ½Àº ¹Ì¸® ÁغñµÇ¾î ¾ß ÇÒ »çÇ×ÀÌ´Ù. <itemize> <item>¾ÆÆÄÄ¡ <item>JServ <item>JDK1.1.x ÀÌ»ó <item>JSDK2.0 ÀÌ»ó <item>postgreSQL <item>Window 98 (Ŭ¶óÀ̾ðÆ®) </itemize> <p>ÀÌ¹Ì Å×½ºÆ®¸¦ ¸¶Ä£ ÇÊÀÚÀÇ È¯°æÀº ´ÙÀ½°ú °°´Ù. <itemize> <item>¾×¼¿ ¸®´ª½º 6.1 <item>¾ÆÆÄÄ¡ 1.3.9 <item>JServ 1.0 <item>JDK 1.2.2 <item>JSDK 2.0 <item>postgresql 6.5.3 ¹× postgresql 7.0.x <item>Window 98 (Ŭ¶óÀ̾ðÆ®) </itemize> <p>±âŸ Âü°í¸¦ À§ÇÑ »çÀÌÆ®´Â ´ÙÀ½°ú °°´Ù. <itemize> <item><url url="http://www.apache.kr.net" name="http://apache.kr.net"> <item><url url="http://www.apache.org" name="http://www.apache.org"> <item><url url="http://www.postgresql.org" name="http://www.postgresql.org"> <item><url url="http://www.blackdown.org" name="http://www.blackdown.org"> <item><url url="http://java.apache.org" name="http://java.apache.org"> <item><url url="http://java.sun.com" name="http://java.sun.com"> <item><url url="http://database.sarang.net" name="http://database.sarang.net"> </itemize> <p>±âŸ ¾à°£ÀÇ Æ÷½ºÆ®±×·¹½º ¹®¼­¿Í Apache-JServ, Æ÷½ºÆ®±×·¹½º ¿¬µ¿ °ü·ÃÀÇ ¼Ò½º ¿¹Á¦°¡ ÇÊÀÚÀÇ È¨ÆäÀÌÁö¿¡ (<url url="http://user.chollian.net/~nogadax" name="http://user.chollian.net/~nogadax">) ÀÖÀ¸´Ï ÂüÁ¶Çϱ⠹ٶõ´Ù. <sect>Æ÷½ºÆ®±×·¹½º JDBC µå¶óÀ̹ö ¸¸µé±â <p>Æ÷½ºÆ®±×·¹½º´Â <bf>Type 4</bf>ÀÇ JDBC µå¶óÀ̹ö¸¦ Á¦°øÇÑ´Ù. Type 4´Â ¼ø¼ö ÀÚ¹Ù·Î ÀÛ¼ºµÇ¾ú°í µ¥ÀÌÅͺ£À̽º ÀÚüÀÇ Åë½Å ÇÁ·ÎÅäÄÝ·Î Åë½ÅÇÑ´Ù. À̴ Ŭ¶óÀ̾ðÆ®ÃøÀÌ JDBC¸¦ ÅëÇØ DBMS ¼­¹ö¿ÍÀÇ Á÷Á¢ÀûÀÎ Åë½ÅÀÌ °¡´ÉÇÔÀ» ÀǹÌÇÑ´Ù. ³×Æ®¿öÅ©»ó¿¡¼­ JDBC µå¶óÀ̹ö¸¦ ÅëÇØ °£Æí ÇÏ°Ô Æ÷½ºÆ®±×·¹½º DB ¼­¹ö¿Í ¿¬°áÇÒ ¼ö ÀÖÀ¸¸ç À̸¦ ÀÀ¿ëÇÏ·Á´Â °³¹ßÀÚ´Â DB ÀÇ ±â´É¿¡ ¸¸ ÁýÁßÇϸç ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. <p>¶ÇÇÑ Æ÷½ºÆ®±×·¹½º JDBC µå¶óÀ̹ö´Â Ç÷§Æû¿¡ ºñÁ¾¼ÓÀûÀ̹ǷΠÇѹø ÄÄÆÄÀÏµÈ µå¶óÀ̹ö´Â ¾î¶² Ç÷§Æû¿¡¼­µµ »ç¿ë °¡´ÉÇÏ´Ù. ¿¹¸¦ µé¾î, ÄÄÆÄÀÏ µÇ¾î »ý¼ºµÈ Æ÷½ºÆ®±×·¹½º JDBC µå ¶óÀ̹ö´Â À©µµ¿ì³ª ¸®´ª½º¿¡¼­ ¾î¶°ÇÑ ¼öÁ¤¾øÀÌ ¹Ù·Î »ç¿ë °¡´ÉÇÏ´Ù. <sect1>JDBC ´Ù¿î¹Þ±â <p>Æ÷½ºÆ®±×·¹½º¸¦ Á÷Á¢ ¼³Ä¡ÇÏÁö ¾Ê¾Æ Æ÷½ºÆ®±×·¹½ºÀÇ ¼Ò½º°¡ ¾øÀ» °æ¿ì Æ÷½ºÆ®±×·¹½º »çÀÌÆ® (<url url="http://www.postgresql.org" name="http://www.postgresql.org">) ¿¡¼­ RPM ÇüÅÂÀÇ JDBC µå¶óÀ̹ö¸¦ ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù. ±×¿Ü¿¡ <url url="http://www.retep.org.uk" name="http://www.retep.org.uk"> ¿¡¼­ ´Ù¿î ¹ÞÀ» ¼ö ÀÖ´Ù. <p>´Ù¿î¹ÞÀ» ¶§ ÁÖÀÇÇÒ Á¡ÀÌ Àִµ¥ ¸¸¾à "JDK1.1.x" ¸¦ °¡Áö°í ÀÖ´Ù¸é "JDBC 1" µå¶óÀ̹ö¸¦ ´Ù¿î¹Þ¾Æ¾ß ÇÏ°í "JDK1.2" ÀÌ»óÀ» °¡Áö°í ÀÖ´Ù¸é "JDBC 2" µå¶óÀ̹ö¸¦ ´Ù¿î¹ÞÀ¸¸é µÈ´Ù. <sect1>JDBC ¸¸µé±â <p>JDBC µå¶óÀ̹ö°¡ ¾ø´Ù¸é À̸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ¸¸¾à, Æ÷½ºÆ®±×·¹½ºÀÇ ¼Ò½º¸¦ ´Ù¿î¹Þ¾Æ Á÷Á¢ ¼³Ä¡¸¦ ÇÑ °æ¿ìÀ̸é Æ÷½ºÆ®±×·¹½º ¼Ò½º µð·ºÅ丮³»ÀÇ interfaces µð·ºÅ丮¿¡ JDBC µå¶óÀ̹ö ¼Ò½º°¡ À־ ÄÄÆÄÀÏÀ» ÇÏ¸é µÈ´Ù. <p>JDBC µå¶óÀ̹öÀÇ ÄÄÆÄÀϽà "JDK1.1.x" ÇÏ¿¡¼­ JDBC µå¶óÀ̹ö¸¦ ¸¸µé¸é "JDBC 1" µå¶óÀÌ ¹öÀÌ´Ù. JDK1.2 ¹öÁ¯¿¡¼­ ¸¸µé¾îÁø JDBC µå¶óÀ̹ö´Â "JDBC 2" µå¶óÀ̹öÀÌ´Ù. <p>ÀÌ ¹®¼­¿¡¼­´Â Æ÷½ºÆ®±×·¹½ºÀÇ ¼Ò½º µð·ºÅ丮´Â "/usr/local/src/pgsql_¹öÁ¯" ÀÌ¶ó °¡Á¤ÇÏ°í Æ÷½ºÆ®±×·¹½º°¡ ÄÄÆÄÀÏµÇ¾î ¼³Ä¡µÉ µð·ºÅ丮¸¦ "/usr/local/pgsql" À̶ó°í °¡Á¤ÇÑ´Ù. ±âŸ, Æ÷ ½ºÆ®±×·¹½º "6.5.x" ¹öÀü´ëÀÇ ÄÄÆÄÀÏ ¹æ¹ý°ú Æ÷½ºÆ®±×·¹½º "7.0.x" ¹öÀü´ëÀÇ JDBC µå¶óÀ̹ö ÀÇ ÄÄÆÄÀÏ ¹æ¹ýÀÌ ´Ù¸£¹Ç·Î ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. ÀÌÁ¦ JDBC µå¶óÀ̹ö¸¦ ¸¸µé¾îº¸ÀÚ. <sect2>postgreSQL 6.5.x µå¶óÀ̹ö ¸¸µé±â<p> <p>postgreSQL 6.5.x ÀÇ °æ¿ì´Â ´ÙÀ½°ú °°´Ù. <p>/usr/local/src/pgsql6.5.3/src/interfaces/jdbc]$<bf> make</bf> <p>´ÜÁö À§ÀÇ µð·ºÅ丮·Î °¡¼­ "make"¸¸ ÇØÁÖ¸é µÈ´Ù. "make" ¿Ï·á ÈÄ¿¡ ÄÄÆÄÀÏ µÈ µå¶óÀ̹ö ¸¦ È®ÀÎÇØ º¸ÀÚ. µå¶óÀ̹öÀÇ À̸§Àº "postgresql.jar" ÀÌ´Ù. ÀÌÁ¦´Â "/usr/local/pgsql" ¿¡ jdbc ¶ó´Â µð·ºÅ丮¸¦ ¸¸µé°í "postgresql.jar" ¸¦ º¹»çÇÏÀÚ. JDBC µå¶óÀ̹ö¸¦ ÀúÀåÇÒ µð·ºÅ丮´Â ÀÚ½ÅÀÌ ¿øÇÏ´Â ´ë·Î ¹Ù²Ù¾îµµ ÁÁ´Ù. <p>/usr/local/pgsql]$ mkdir  jdbc <p>/usr/local/pgsql]$ cp  ../src/pgsql6.5.3/src/interfaces/postgresql.jar  ./jdbc/ <sect2>postgreSQL 7.0.x µå¶óÀ̹ö ¸¸µé±â<p> <p>"postgreSQL 7.0.x" ÀÇ °æ¿ì´Â "6.5.x" ¿Í´Â Á» ´Ù¸£´Ù. ¸¸¾à, "6.5.x" ó·³ "make" ¸¸ ÀÔ·Â ÇÏ¸é ¸Þ½ÃÁö°¡ ³ª¿À´Âµ¥ ±× ³»¿ëÀº "JDK1.1.x" À̸é "make jdbc1 jar"À» ÀÔ·ÂÇÏ°í "JDK1.2.x" À̸é "make jdbc2 jar"¸¦ ÀÔ·ÂÇ϶ó´Â ¸Þ½ÃÁö°¡ ³ª¿Â´Ù. ¿©±â¼­´Â "JDK1.2.x" ·Î °¡Á¤ÇÏ°í ÄÄÆÄÀÏ Çغ¸ÀÚ. <p> /usr/local/src/pgsql7.0.2/src/interfaces/jdbc]$<bf> make    jdbc2    jar</bf> <p>ÀÌÁ¦ ÄÄÆÄÀÏ µÈ µå¶óÀ̹ö¸¦ È®ÀÎÇØ º¸ÀÚ. µå¶óÀ̹öÀÇ À̸§Àº "postgresql.jar" ÀÌ´Ù. »ý¼ºµÈ JDBC µå¶óÀ̹ö´Â "/usr/local/pgsql" ¿¡ jdbc ¶ó´Â µð·ºÅ丮¸¦ ¸¸µé°í JDBC µå¶óÀ̹ö¸¦ º¹ »çÇØ ³õÀ¸¸é µÈ´Ù. <p> /usr/local/pgsql]$ mkdir  jdbc <p> /usr/local/pgsql]$ cp  ../src/pgsql7.0.2/src/interfaces/postgresql.jar  ./jdbc/ <sect1>JDBC µå¶óÀ̹ö Å×½ºÆ®Çϱâ <p>¸®´ª½º¿¡¼­ ÄÄÆÄÀÏµÇ¾î »ý¼ºµÈ JDBC µå¶óÀ̹ö¸¦ Å×½ºÆ®ÇÏ·Á°í ÇÏ´Â °æ¿ì "JDK"¸¦ À§ÇØ CLASSPATH ¸¦ ¼³Á¤ÇÏ¿©¾ß ÇÑ´Ù. CLASSPATHÀÇ ¼³Á¤ ¿¹´Â ´ÙÀ½°ú °°´Ù. <p><bf>export   CLASSPATH="$CLASSPATH:/usr/local/pgsql/jdbc/postgresql.jar:."</bf> <p>À§ÀÇ export ¸í·ÉÀ» ÀÏ¹Ý ½©»ó¿¡¼­ ½ÇÇàÇÏ¿©µµ µÇ³ª ÀÌ´Â ÀÏȸ¼ºÀ̹ǷΠ¸Å¹ø ºÎÆà ¶§¸¶´Ù export ¸í·ÉÀ» ½ÇÇàÇØÁÖ¾î¾ß ÇÑ´Ù. ÀÏȸ¼ºÀÌ ¾Æ´Ñ ¿µ±¸ÀûÀ¸·Î ¼³Á¤Çϱâ À§ÇØ ¸®´ª½ºÀÇ ºÎÆà ½Ã ·Î±ä °ü·Ã ¼³Á¤ ÆÄÀÏÀÎ "<bf>/etc/profile</bf>" À̳ª "/root/.bash_profile" µî¿¡ À§ÀÇ CLASSPATH ¼³Á¤ ¿¹¸¦ Ãß°¡ÇÏ¸é µÈ´Ù. <p>¼³Á¤ÀÌ ³¡³ª¸é ºÎÆà ÈÄ ¼³Á¤ »çÇ× ¹× JDBC µå¶óÀ̹öÀÇ È®ÀÎÀ» À§ÇØ Å×½ºÆ®¸¦ Çغ¸ÀÚ. JDBC µå¶óÀ̹öÀÇ Å×½ºÆ®¸¦ À§ÇØ "<bf>/usr/local/src/pgsql653/src/interfaces/jdbc/example</bf>" µð·º Å丮ÀÇ ¿¹Á¦ ¼Ò½º¸¦ ÄÄÆÄÀÏÇغ»´Ù. ´ÙÀ½Àº Å×½ºÆ®¸¦ À§ÇØ example µð·ºÅ丮ÀÇ basic.java¸¦ ÄÄÆÄÀÏÇÏ´Â ¿¹ÀÌ´Ù. <p>/usr/local/src/pgsql653/src/interfaces/jdbc/example]$ javac  basic.java <sect>¼­¹ö Ŭ¶óÀ̾ðÆ® (À©µµ¿ì) ¼³Á¤ <p>¸®´ª½º¿¡ Æ÷½ºÆ®±×·¹½º¸¦ ¼³Ä¡ÇÑ ÈÄ Æ÷½ºÆ®±×·¹½º¸¦ DB¼­¹ö·Î ÇÏ°í Ŭ¶óÀ̾ðÆ®ÃøÀÎ À©µµ¿ì ¿¡¼­ JDBC¸¦ ÅëÇØ Æ÷½ºÆ®±×·¹½º¸¦ ÀÌ¿ëÇÏ·Á ÇÑ´Ù°í °¡Á¤ÇÏÀÚ. ±âŸ À©µµ¿ìÀÇ IP ÁÖ¼Ò´Â 210.110.144.169 ÀÌ¶ó °¡Á¤ÇÑ´Ù. <p><bf>JDBC µå¶óÀ̹öÀÇ ¼³Á¤ ¼ø¼­´Â ´ÙÀ½°ú °°´Ù.</bf> <enum> <item><p>Æ÷½ºÆ®±×·¹½º JDBC µå¶óÀ̹ö¸¦ À©µµ¿ìÀÇ Àû´çÇÑ µð·ºÅ丮¿¡ º¹»çÇÑ´Ù. <item><p>À©µµ¿ìÀÇ AUTOEXEC.BAT ÆÄÀÏ¿¡ JDBC µå¶óÀ̹ö °æ·Î¸¦ CLASSPATH¿¡ µî·ÏÇÑ´Ù. <p>¾Æ·¡´Â AUTOEXEC.BAT ÆÄÀÏ¿¡¼­ÀÇ ¼³Á¤¿¹ÀÌ´Ù. <p><bf>set  classpath=.;c:\postgres\jdbc_drv\postgresql.jar</bf><p> <item><p>À©µµ¿ì¸¦ ¸®ºÎÆÃÇÑ´Ù.<p> <item><p>À©µµ¿ì¿¡¼­ DB¼­¹ö·ÎÀÇ ¿øÇÒÇÑ Á¢±ÙÀ» Çã¿ëÇϱâ À§ÇØ ¸®´ª½º¿¡ ¼³Ä¡µÈ Æ÷½ºÆ®±×·¹½ºÀÇ "pg_hba.conf" ÆÄÀÏÀ» ¼öÁ¤ÇÑ´Ù. <p>¸¸¾à Æ÷½ºÆ®±×·¹½ºÀÇ °æ·Î°¡ "/usr/local/pgsql" À̸é pg_hba.conf ÆÄÀÏÀº "<bf>/usr/local/pgsql/data</bf>" µð·ºÅ丮¿¡ ÀÖ´Ù. <p>¾Æ·¡´Â ¼³Á¤ ¿¹·Î¼­ Àڽſ¡ ȯ°æ¿¡ ¸Â°Ô ¼öÁ¤ÇÑ ´ÙÀ½ pg_hba.conf ÆÄÀÏÀÇ ¸¶Áö¸· ¶óÀο¡ Ãß °¡ÇÏ¸é µÈ´Ù. <p><bf>host   all   210.110.144.169   255.255.255.255   trust</bf> </enum> <p>À§ÀÇ ¿¹¿¡ ´ëÇÑ ¼³¸íÀº ´ÙÀ½°ú °°´Ù. <p><bf>host</bf> ´Â ¿¹¾à¾î·Î¼­ Internet Domain ¹æ½ÄÀ» ÀǹÌÇÑ´Ù. <bf>all</bf> Àº ¸ðµç µ¥ÀÌÅͺ£À̽º¸¦ ÀǹÌÇÏ ¸ç ¸¸¾à ƯÁ¤ DB·Î ¼³Á¤ÇÏ°íÀÚ ÇÑ´Ù¸é DB À̸§À» ÀûÀ¸¸é µÈ´Ù. ¿¹¸¦ µé¾î Á¢±ÙÇÏ·Á´Â µ¥ ÀÌÅͺ£À̽º¸íÀÌ "nogadax" À̸é À§ÀÇ ¿¹¿¡¼­ "all" ´ë½Å "nogadax"¸¦ ÀûÀ¸¸é µÈ´Ù. <bf>210.110.144.169</bf>´Â Æ÷½ºÆ®±×·¹½º¿¡ Á¢±ÙÇÏ·Á´Â Ŭ¶óÀ̾ðÆ®ÀÇ IPÁּҷμ­ ¿©±â¼­´Â À©µµ¿ìÀÇ IP ÁÖ¼ÒÀÌ´Ù. <bf>255.255.255.255</bf> ´Â Net Mask ÀÌ´Ù. <bf>trust</bf> ´Â Ŭ¶óÀ̾ðÆ®ÀÇ Á¢±Ù¿¡ ´ëÇÑ ÀÎÁõ ¸Þ¼Òµå·Î¼­ trust´Â º°´Ù¸¥ ÀÎÁõ ÀýÂ÷¾øÀÌ access °¡ °¡´ÉÇÏ´Ù. ¸¸¾à <bf>crypt</bf> À̸é ID ¿Í ÆÐ ½º¿öµå°¡ ÇÊ¿äÇÏ´Ù. ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº "pg_hba.conf" ¼³¸íÀ» ÂüÁ¶¹Ù¶ó¸ç ÀÌ¿¡ ´ëÇÑ °ÍÀº <url url="http://www.kldp.org" name="http://www.kldp.org"> ¿¡ ÀÖÀ¸´Ï ÂüÁ¶Çϱ⠹ٶõ´Ù. <p><bf>Å×½ºÆ®</bf> <p>Å×½ºÆ®¸¦ À§ÇØ Æ÷½ºÆ®±×·¹½ºÀÇ JDBC ¿¹Á¦ ÇÁ·Î±×·¥ ¼Ò½º¸¦ À©µµ¿ì¿¡ Àû´çÈ÷ º¹»çÇÑ ÈÄ ÄÄÆÄÀÏ ÇÑ´Ù. ÄÄÆÄÀÏ ¿¹´Â ´ÙÀ½°ú °°´Ù. <P> javac  Basic.java <sect> Apache-Jserv¿¡ ¿¬µ¿Çϱâ <P>ÀÌ ºÎºÐÀ» ½ÃÀÛÇϱâ Àü¿¡ JDK¸¦ À§ÇÑ <bf>CLASSPATH</bf>°¡ ¸ÕÀú ¼³Á¤µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. À̸¦ À§ÇØ ¾Õ¿¡¼­ ¼³¸íÇÑ "JDBC µå¶óÀ̹ö Å×½ºÆ®Çϱâ"¸¦ ÂüÁ¶Çϱâ¹Ù¶õ´Ù. <P>Apache-JServ °¡ ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ´Ù¸é JServ ȯ°æÆÄÀÏÀÎ "<bf>jserv.properties</bf>" °¡ ÀÖÀ» °ÍÀÌ ´Ù. ÀÌ È­Àϳ»¿¡ postgresql.jarÀÇ °æ·Î¸¦ Æ÷ÇÔ½ÃÄÑÁÖ¸é µÈ´Ù. ÇÊÀÚÀÇ Apache-JServÀÇ È¯°æ ÆÄÀÏ ±¸¼ºÀº ´ÙÀ½°ú °°´Ù. <tscreen><verb> /usr/local/apache/conf]$ ls access.conf httpd.conf srm.conf jserv.conf jserv.properties servlets.properties </verb></tscreen> <p>Æ÷½ºÆ®±×·¹½ºÀÇ JDBC µå¶óÀ̹ö°¡ "jserv.proeprties" ¿¡ µî·ÏÀÌ µÇ¸é Apache-JServ ¸¦ À§ÇÑ È¯°æ ¼³Á¤Àº ³¡ÀÌ´Ù. "jserv.properties" ¿¡ ´ÙÀ½Ã³·³ Ãß°¡ÇØÁÖ¸é µÈ´Ù. <p> <bf>wrapper.classpath=/usr/local/pgsql/jdbc/postgresql.jar</bf> <p>À§Ã³·³ Ãß°¡¸¦ ÇÏ¿´´Ù¸é Apache-JServ ÀÇ È¯°æ¼³Á¤ ºÎºÐÀº ³¡³µ´Ù. <p>ÀÌÁ¦´Â "¼­¹ö Ŭ¶óÀ̾ðÆ® (À©µµ¿ì) ¼³Á¤" ºÎºÐ¿¡¼­ ¾ð±ÞµÇ¾ú´ø "pg_hba.conf" ÆÄÀÏÀ» ¼öÁ¤ÇÏ ¸é µÈ´Ù. ¿©±â¼­´Â Apache °¡ ¼³Ä¡µÈ °÷ÀÇ IP ÁÖ¼Ò¸¦ 210.110.144.168 ¶ó°í °¡Á¤ÇÏÀÚ. ¶ÇÇÑ, Æ÷½ºÆ®±×·¹½ºÀÇ °æ·Î°¡ "/usr/local/pgsql" À̸é pg_hba.conf ÆÄÀÏÀº "/usr/local/pgsql/data" µð·ºÅ丮¿¡ ÀÖ´Ù. <p>¾Æ·¡´Â ¼³Á¤ ¿¹·Î¼­ Àڽſ¡ ȯ°æ¿¡ ¸Â°Ô ¼öÁ¤ÇÑ ´ÙÀ½ pg_hba.conf ÆÄÀÏÀÇ ¸¶Áö¸· ¶óÀο¡ Ãß °¡ÇÏ¸é µÈ´Ù. <tscreen><verb> host all 210.110.144.168 255.255.255.255 trust </verb></tscreen> <p>À§ÀÇ ¿¹¿¡ ´ëÇÑ ¼³¸íÀº ´ÙÀ½°ú °°´Ù. <p><bf>host</bf> ´Â ¿¹¾à¾î·Î¼­ Internet Domain ¹æ½ÄÀ» ÀǹÌÇÑ´Ù. Internet Domain Àº ÇÁ·Î¼¼½ºÀÇ Åë ½ÅÀÌ ³×Æ®¿öÅ©°£ÀÇ ÇÁ·ÎÅäÄÝÀ» ÅëÇØ ÀÌ·ç¾îÁö°Ô ÇÏ´Â ¸ÞÄ«´ÏÁòÀ¸·Î¼­ ÇÁ¸£ÅäÄÝÀ» ÅëÇØ DB ¼­¹ö¿¡ Á¢±ÙÇÏ·Á´Â Host ÀÇ Á¢±ÙÀ» Á¦¾îÇÑ´Ù. <bf>all</bf> Àº ¸ðµç µ¥ÀÌÅͺ£À̽º¸¦ ÀǹÌÇÏ¸ç ¸¸¾à Ư Á¤ DB·Î ¼³Á¤ÇÏ°íÀÚ ÇÑ´Ù¸é DB À̸§À» ÀûÀ¸¸é µÈ´Ù. ¿¹¸¦ µé¾î Á¢±ÙÇÏ·Á´Â µ¥ÀÌÅͺ£À̽º ¸íÀÌ "nogadax" À̸é À§ÀÇ ¿¹¿¡¼­ "all" ´ë½Å "nogadax"¸¦ ÀûÀ¸¸é µÈ´Ù. "<bf>210.110.144.168</bf>" ´Â Æ÷½ºÆ®±×·¹½º¿¡ Á¢±ÙÇÏ·Á´Â Ŭ¶óÀ̾ðÆ®ÀÇ IPÁÖ¼ÒÀÌ´Ù. ¿©±â¼­´Â Apache-Jserv°¡ ¼³Ä¡µÈ °÷ÀÇ IP ÁÖ¼ÒÀÌ´Ù. <bf>255.255.255.255</bf> ´Â Net Mask ÀÌ´Ù. <bf>trust</bf> ´Â Ŭ¶óÀ̾ðÆ®ÀÇ Á¢±Ù¿¡ ´ëÇÑ ÀÎÁõ ¸Þ¼Òµå·Î¼­ trust´Â º°´Ù¸¥ ÀÎÁõ ÀýÂ÷¾øÀÌ access °¡ °¡´ÉÇÏ´Ù. ¸¸¾à crypt À̸é ID ¿Í Æнº¿öµå°¡ ÇÊ¿äÇÏ¸ç ´õ¿í ÀÚ¼¼ÇÑ ³»¿ëÀº pg_hba.conf ÆÄÀÏÀ» ¼³¸íÇÑ ¹®¼­¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. <sect> Æ÷½ºÆ®±×·¹½º JDBC ±âÃÊ <sect1>JDBC¸¦ À§ÇÑ Áغñ»çÇ× <p>JDBC µå¶óÀ̹ö·Î Æ÷½ºÆ®±×·¹½º¸¦ ÀÀ¿ëÇÑ ÇÁ·Î±×·¥À» Å×½ºÆ®Çϱâ Àü¿¡ Æ÷½ºÆ®±×·¹½º µð¸ó ÀÌ È°¼ºÈ­ µÇ¾î ÀÖ¾î¾ß ÇÏ¸ç µ¥¸óÀº ´ÙÀ½ÀÇ ¿É¼Ç(i)¿¡ ÀÇÇØ ±âµ¿µÇ¾îÁ®¾ß ÇÑ´Ù. <p><bf>postmaster   -i &</bf> <p>ÀÌ°ÍÀº ³×Æ®¿öÅ©¸¦ ÅëÇØ ¿¬°áÇÏ·Á´Â JDBC¸¦ À§ÇØ Çʼö »çÇ×ÀÌ´Ù. ¶ÇÇÑ pg_hba.conf ÆÄÀÏÀ» È®ÀÎÇϵµ·Ï ÇÑ´Ù. ¸¸¾à, ÀϹÝÀûÀÎ IPÁÖ¼Ò°¡ ¾Æ´Ñ <bf>localhost(127.0.0.1)</bf>À» »ç¿ëÇÏ·ÁÇÑ´Ù¸é ÀÌ ÁÖ ¼Ò(127.0.0.1)¿¡ ´ëÇÏ¿© pg_hba.conf ¿¡ ¼³Á¤ÇÏ¿©¾ß ÇÑ´Ù. ´ÙÀ½Àº localhost ¼³Á¤ ¿¹ÀÌ´Ù. <tscreen><verb> host all 127.0.0.1 255.255.255.255 trust </verb></tscreen> <sect1>µå¶óÀ̹ö ·Îµù <p>JDBC µå¶óÀ̹öÀÇ ·Îµù ¹æ¹ýÀº <bf>Class.forName()</bf> ¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ÁÖÀÇÇÒ Á¡ÀÌ Àִµ¥ Æ÷ ½ºÆ®±×·¹½º 6.5.x ¹öÀü°ú 7.0.x ¹öÀü´ë¿¡¼­ ¾à°£ÀÇ Â÷ÀÌ°¡ »ý°å´Ù. ÇÊÀÚ°¡ Å×½ºÆ®¸¦ ¸ñÀûÀ¸ ·Î ÀÌÀü¿¡ ¸¸µé¾î ³õ¾Ò´ø ÇÁ·Î±×·¥À¸·Î 7.0.x ¹öÀü´ëÀÇ JDBC µå¶óÀ̹ö¸¦ Å×½ºÆ®¸¦ Çغ» °á °ú ¿¡·¯°¡ ¹ß»ýÇÏ¿´´Ù. ¿¡·¯¸¦ ÇØ°áÇϱâ À§ÇØ 7.0.x ¹öÀüÀÇ ¹®¼­¸¦ ã¾Æº» °á°ú ¾Æ¹«·± º¯µ¿ ÀÌ ¾ø¾úÁö¸¸ example µð·ºÅ丮ÀÇ ¿¹Á¦ ¼Ò½º¸¦ º¸°í ¿øÀÎÀ» ¹ß°ßÇÏ¿´´Ù. <p>Æ÷½ºÆ®±×·¹½º 6.5.x ¹öÀüÀÇ JDBC µå¶óÀ̹ö´Â Class.forName("<bf>postgresql.jar</bf>"); ÇÏ¸é µÇÁö¸¸ 7.0.x ¹öÀüÀÇ JDBC µå¶óÀ̹ö´Â Class.forName("<bf>org.postgresql.jar</bf>");¸¦ ÇÏ¿©¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ Â÷À̸¦ ÁÖÀÇÇϱ⠹ٶõ´Ù. ´ÙÀ½Àº Æ÷½ºÆ®±×·¹½º ¹öÀü´ëº°·Î Class.forName()¸¦ »ç¿ëÇÑ ¿¹ÀÌ ´Ù. ±âŸ ¿¹¿Ü 󸮸¦ À§ÇØ <bf>ClassNotFoundException</bf>À» »ç¿ëÇÑ´Ù. <sect2>postgresql 6.5.X ¿¡¼­ÀÇ Class.forName() ÀÇ ¿¹<p> <tscreen><verb> public void test() throws ClassNotFoundException, FileNotFoundException, IOException, SQLException { String url = "jdbc:postgresql:nogadax"; String usr = "postgres"; String pwd = ""; Class.forName("postgresql.Driver"); Connection db = DriverManager.getConnection(url, usr, pwd); ........ ........ } </verb></tscreen> <sect2>postgresql 7.0.X ¿¡¼­ÀÇ Class.forName() ÀÇ ¿¹<p> <tscreen><verb> public void test() throws ClassNotFoundException, FileNotFoundException, IOException, SQLException { String url = "jdbc:postgresql:nogadax"; String usr = "postgres"; String pwd = ""; Class.forName("org.postgresql.Driver"); Connection db = DriverManager.getConnection(url, usr, pwd); ........ ........ } </verb></tscreen> <sect1>Connection to the Database <p>Æ÷½ºÆ®±×·¹½ºÀÇ µ¥ÀÌÅͺ£À̽º·ÎÀÇ ¿¬°áÀ» À§ÇÑ ¿¹´Â ´ÙÀ½°ú °°´Ù. <tscreen><verb> jdbc:postgresql:database_name jdbc:postgresql://host/database_name jdbc:postgresql://host:port/database_name </verb></tscreen> <descrip> <tag>host</tag>Æ÷½ºÆ®±×·¹½º DB ¼­¹öÀÇ È£½ºÆ® ³×ÀÓÀÌ´Ù. IP¸¦ Á־ µÈ´Ù. ¸¸¾à ÀÌ ºÎºÐÀÌ »ý·«µÇ¸é µðÆúÆ®´Â localhost(127.0.0.1) ÀÌ´Ù.<p> <tag>port</tag>Æ÷½ºÆ®±×·¹½ºÀÇ µðÆúÆ® Æ÷Æ®´Â 5432 ÀÌ¸ç »ý·« °¡´ÉÇÏ´Ù.<p> <tag>database_name</tag>µ¥ÀÌŸº£À̽º¸í<p> </descrip> <sect2>±âŸ »çÇ×<p> <p>ÄÁ³ØÆ®Çϱâ À§ÇØ JDBC ·ÎºÎÅÍ Connection ÀνºÅϽº¸¦ ¾ò¾î¾ß ÇÑ´Ù. À̸¦ À§ÇØ DriverManager.getConnection() ¸Þ¼Òµå¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. <p>Connection  db = DriverManager.getConnection(url,user,pwd); <p>±âŸ Æ÷½ºÆ®±×·¹½º´Â ÇϳªÀÇ ·¹ÄÚµåÀÇ Å©±â°¡<bf> 8K ¹ÙÀÌÆ®</bf>·Î Á¦ÇѵǾî ÀÖ´Ù. ¸¸¾à ÇϳªÀÇ ·¹ Äڵ尡 8K ¹ÙÀÌÆ®¸¦ ³Ñ¾î¾ß ÇÑ´Ù¸é "<bf>Large Object</bf>" ¶ó´Â ¹æ¹ýÀ» »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. ÀÌ¿¡ ´ë Çؼ­´Â Æ÷½ºÆ®±×·¹½º ÇÁ·Î±×·¡¸Ó °¡À̵åÀÇ JDBC ºÎºÐÀ» ÂüÁ¶Çϱ⠹ٶõ´Ù. ¶ÇÇÑ, JDBC ¸¦ À§ÇÑ ³ª¸ÓÁö ÀÚ¼¼ÇÑ ºÎºÐÀº ÀÏ¹Ý JDBC ¹®¼­µéÀ» ÂüÁ¶Çϱ⠹ٶõ´Ù. <sect1>Jserv Å×½ºÆ®¿ë ¼Ò½º <p>´ÙÀ½Àº Apache-Jserv ¿Í postgreSQLÀÌ ¿¬µ¿µÇ¾úÀ» ¶§ Å×½ºÆ®¸¦ À§ÇÑ ¼Ò½ºÀÌ´Ù. ´ÙÀ½ÀÇ ¼Ò½º´Â Æ÷½ºÆ®±×·¹½ºÀÇ ¿¹Á¦ ¼Ò½º·Î¼­ ´ÜÁö servlet ·Î ¹Ù²Ù¾î web »ó¿¡¼­ ½ÇÇàÀÌ µÇ°Ô²û ÇØÁØ °ÍÀÌ´Ù. <p>´ÙÀ½ ¿¹Á¦¸¦ ÄÄÆÄÀÏÇÏ°í ½ÇÇàÇϱ⿡ ¾Õ¼­ Æ÷½ºÆ®±×·¹½º¿¡ µ¥ÀÌŸº£À̽º¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ¿©±â¼­´Â µ¥ÀÌŸº£À̽º À̸§ÀÌ nogadax ÀÌ´Ù. À̸¦ ÀûÀýÈ÷ ¹Ù²Ù±â ¹Ù¶õ´Ù. ¶ÇÇÑ Æ÷½ºÆ®±×·¹ ½ºÀÇ À¯Àú¸íÀº postgres ÀÌ°í Æнº¿öµå´Â ¾ø´Ù. ÀÌ°÷ÀÇ ¼Ò½º¿¡¼­ÀÇ url, usr, pwd ÀÇ ¼³Á¤Àº ´ÙÀ½°ú °°´Ù. À̸¦ ÂüÁ¶ÇÏ¿© ÀÚ½ÅÀÇ È¯°æ¿¡ ¸Â°Ô ¹Ù²Ù±â ¹Ù¶õ´Ù. <tscreen><verb> String url = "jdbc:postgresql:nogadax"; String usr = "postgres"; String pwd = ""; </verb></tscreen> <p>ÇÊÀÚÀÇ Å×½ºÆ® ȯ°æÀº ÇÑ´ëÀÇ PC ¿¡ Æ÷½ºÆ®±×·¹½º¿Í ¾ÆÆÄÄ¡°¡ °°ÀÌ ¼³Ä¡µÇ¾î ÀÖ´Ù. ¸¸¾à Å×½ºÆ®ÇÏ·Á°í Çϴ ȯ°æÀÌ DB¼­¹ö¿Í WEB¼­¹ö°¡ ¼­·Î ´Ù¸¥ °÷¿¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é, Áï, 3-Tier ȯ°æÀ̸é URL Àº À§¿Í´Â ´Ù¸£°Ô µÇ¾îÁ®¾ß ÇÑ´Ù. <p>ÀÚ½ÅÀÇ È¯°æÀ» Àû¿ëÇϱâ À§ÇØ ´ÙÀ½ÀÇ ¿¹¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. Âü°í·Î IP ÁÖ¼Ò 210.110.144.162 ´Â Æ÷½ºÆ®±×·¹½º DB ¼­¹öÀÇ IPÁÖ¼ÒÀ̸ç Æ÷Æ® ¹øÈ£°¡ »ý·«µÇ¾úÀ¸¹Ç·Î µðÆúÆ® ¹øÈ£ "5432"·Î ÀÚµ¿ ¼ÂÆÃµÈ »óÅÂÀÌ´Ù. <p>  String  url= "jdbc:postgresql://210.110.144.162/nogadax"; <p>±âŸ Class.forName()À» ¹öÀü¿¡ µû¶ó ÀûÀýÈ÷ ¼öÁ¤Çϱ⠹ٶõ´Ù. ¾Æ·¡ÀÇ Å×½ºÆ®¿ëÀÇ ¼Ò½º´Â Æ÷½ºÆ®±×·¹½º 6.5.3 ÀÇ JDBC µå¶óÀ̹ö¸¦ ±âÁØÀ¸·Î ÀÛ¼ºµÇ¾úÀ¸¹Ç·Î Class.forName()ÀÌ ¾Æ·¡ ¿Í °°´Ù. <p> Class.forName("postgresql.Driver"); <p>±×·¯¹Ç·Î 7.0.x ÀÇ JDBC µå¶óÀ̹ö¿¡¼­ Å×½ºÆ®¸¦ ÇÏ·Á¸é "<bf>org.postgresql.Driver</bf>" ·Î ¼öÁ¤ÇÏ ¸é µÈ´Ù. <p>¶ÇÇÑ ÄÄÆÄÀÏµÈ ¼­ºí¸´Àº ¸®Æ÷ÁöÅ丮¿¡ ÀÖ¾î¾ß ÇÑ´Ù. ¸®Æ÷ÁöÅ͸®´Â ¼­ºí¸´À» À§ÇÑ ³í¸®ÀûÀÎ µð·ºÅ丮ÀÌ´Ù. ÀÌ°ÍÀº zone ¿Í ¿¬°áµÇ¾îÁö´Âµ¥ zoneÀº URL¿¡ ÷°¡µÇ¾îÁø´Ù. ¸¸¾à zone ÀÇ À̸§ÀÌ servlet ÀÌ°í ¾Æ·¡ÀÇ ¿¹Á¦¼Ò½º¸¦ ÄÄÆÄÀÏ ÈÄ ÁöÁ¤µÈ ¸®Æ÷ÁöÅ͸®¿¡ ÀÖ´Ù¸é ½ÇÇàÀ» À§ÇØ ºê¶ó¿ìÁ®ÀÇ URL â¿¡ ´ÙÀ½Ã³·³ ÀÔ·ÂÇØÁÖ¸é µÇ´Âµ¥ Àڽſ¡°Ô ¸Â°Ô ¹Ù²Ù¾îÁÖ¸é µÈ´Ù. <p>http://localhost/servlet/Hello <p>ȤÀº <p>http://210.110.144.162/servlet/Hello <p>ȤÀº <p>http://nogadax.tit.ac.kr/servlet/Hello <p>´ÙÀ½Àº "Hello.java" ¶ó´Â Å×½ºÆ®¿ëÀÇ ¼Ò½ºÀÌ´Ù. <tscreen><verb> ------------------------------- import java.io.*; import javax.servlet.*; import java.sql.*; import java.text.*; import javax.servlet.http.*; public class Hello extends HttpServlet { Connection db; Statement st; PrintWriter out; public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String title = "Example Apache JServ Servlet"; response.setContentType("text/html"); out = response.getWriter(); out.println("<HTML><HEAD><TITLE>"); out.println(title); out.println("</TITLE></HEAD><BODY bgcolor=\"#FFFFFF\">"); out.println("<H1>" + title + "</H1>"); out.println("<H2>Congratulations, Apache JServ is working!</H2>"); try { test(); } catch(Exception ex){ out.println("<h2>DB error!</h2>"); } out.println("</BODY></HTML>"); out.close(); } public void cleanup() { try { st.executeUpdate("drop table basic"); } catch(Exception ex) { } } public void doexample() throws SQLException { out.println("<br><h2>Running tests:</h2>"); st.executeUpdate("create table basic (a int2, b int2)"); st.executeUpdate("insert into basic values (1,1)"); st.executeUpdate("insert into basic values (2,1)"); st.executeUpdate("insert into basic values (3,1)"); st.executeUpdate("update basic set b=8"); out.println("<h2>Updated "+st.getUpdateCount()+" rows</h2>"); PreparedStatement ps = db.prepareStatement("insert into basic values (?,?)"); for(int i=2;i<5;i++) { ps.setInt(1,4); // "column a" = 5 ps.setInt(2,i); // "column b" = i ps.executeUpdate(); } ps.close(); out.println("<h2>performing a query</h2>"); ResultSet rs = st.executeQuery("select a, b from basic"); if(rs!=null) { while(rs.next()) { int a = rs.getInt("a"); int b = rs.getInt(2); out.println("<h2> a="+a+" b="+b+"</h2>"); } rs.close(); } } public void test() throws ClassNotFoundException, FileNotFoundException, IOException,SQLException { String url = "jdbc:postgresql:nogadax"; String usr = "postgres"; String pwd = ""; Class.forName("postgresql.Driver"); db = DriverManager.getConnection(url, usr, pwd); out.println("<h2>Connecting to Database URL = " + url +"</h2>"); out.println("<h2>Connected...Now creating a statement</h2>"); st = db.createStatement(); cleanup(); doexample(); cleanup(); out.println("<h2>Now closing the connection</h2>"); st.close(); db.close(); }//end test } </verb></tscreen> <p><bf>½ÇÇà °á°ú</bf> <p>½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù. ¾Æ·¡¿¡¼­ º¸¿©Áö´Â URLÀÌ ´Ù¸¦ ¼ö ÀÖ´Ù. <tscreen><verb> Example Apache JServ Servlet Congratulations, Apache JServ is working! Connecting to Database URL = jdbc:postgresql:nogadax Connected...Now creating a statement Running tests: Updated 3 rows performing a query a=1 b=8 a=2 b=8 a=3 b=8 a=4 b=2 a=4 b=3 a=4 b=4 Now closing the connection </verb></tscreen> <sect>Æ÷½ºÆ®±×·¹½º À¯Àú ¸¸µé±â <p>JDBC ·Î ¿¬°áÀ» ÇÒ ¶§ »õ·Î¿î À¯Àú¸í°ú Æнº¿öµå¸¦ ÁÖ°í ½ÍÀ» ¶§°¡ ÀÖÀ» °ÍÀÌ´Ù. À̸¦ À§ÇØ Æ÷½ºÆ®±×·¹½ºÀÇ À¯Àú¿Í À¯Àú¿¡ ´ëÇÑ Æнº¿öµå¸¦ ¸¸µå´Â ¹æ¹ýÀ» °£´ÜÈ÷ ¼Ò°³ ÇÏ°Ú´Ù. <p>¸ÕÀú Æ÷½ºÆ®±×·¹½ºÀÇ ½´ÆÛ °èÁ¤(DBA)¸¦ "postgres" ¶ó°í °¡Á¤ÇÏÀÚ. <p>¿©±â¼­´Â µ¥ÀÌÅͺ£À̽ºÀÇ »õ·Î¿î À¯Àú¸¦ »ý¼ºÇÏ°í ±× À¯ÀúÀÇ µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ °ÍÀÌ´Ù. ¼ø¼­´Â ´ÙÀ½°ú °°´Ù. <p><bf>1.</bf> postgres °èÁ¤¿¡ Æнº¿öµå¸¦ »ý¼ºÇÑ´Ù. À̸¦ À§ÇØ Æ÷½ºÆ®±×·¹½ºÀÇ Æ¯º°ÇÑ µ¥ÀÌÅͺ£À̽ºÀÎ "<bf>template1</bf>" ¿¡ Á¢¼ÓÇÑ´Ù. Æнº¿öµå¸¦ "123qwe" ¶ó°í °¡Á¤ÇÑ´Ù. <tscreen><verb> postgres]$ psql template1 ....... template1=>alter user postgres with password '123qwe'; ALTER USER template1=>\q postgres]$ </verb></tscreen> <p><bf>2.</bf> "pg_hba.conf" ÆÄÀÏÀ» ¼öÁ¤ÇÑ´Ù. ¸¸¾à, DB ¼­¹ö·Î Á¢¼ÓÇÏ·Á´Â ÀÚ½ÅÀÇ Host ÀÇ IP °¡ "210.110.144.169" ÀÌ¸é ´ÙÀ½Ã³·³ ¼öÁ¤ÇÑ´Ù. <tscreen><verb> local all crypt host all 127.0.0.1 255.255.255.255 crypt host all 210.110.144.169 255.255.255.255 crypt </verb></tscreen> <p>Âü°í·Î host ·Î ½ÃÀÛÇÏ´Â ¶óÀÎÀº DB ¼­¹ö¿¡ Á¢±ÙÇÏ·Á´Â Ŭ¶óÀ̾ðÆ®¸¦ Á¦¾îÇÏ·Á ÇÑ´Ù. ±×·¯ ¹Ç·Î DB ¼­¹öÀÇ IP ¸¦ ÁÖ´Â °ÍÀÌ ¾Æ´ÔÀ» ÁÖÀÇÇϱ⠹ٶõ´Ù. ¶ÇÇÑ "<bf>crypt</bf>"´Â DB ¼­¹ö·ÎÀÇ Á¢ ±Ù Á¦¾î ¸Þ¼ÒµåÀ̹ǷΠ"crypt"¸¦ Àû¿ëÇÑ ÈĺÎÅÍ´Â DB¼­¹ö·ÎÀÇ Á¢¼ÓÀ» À§ÇØ °èÁ¤°ú Æнº¿ö µå°¡ ÇÊ¿äÇÏ´Ù. <p><bf>3.</bf> ´Ù½Ã Æ÷½ºÆ®±×·¹½º ½´ÆÛ°èÁ¤À¸·Î "template1" µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÑ ÈÄ »õ·Î¿î µ¥ÀÌÅͺ£ À̽º À¯Àú¸¦ »ý¼ºÇÑ´Ù. »õ·Î »ý¼ºÇÒ À¯Àú¸¦ "nogadax" ¶ó°í °¡Á¤Çϸç ÀÌ À¯Àú¿¡°Ô µ¥ÀÌÅͺ£ À̽º¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» ÁÙ °ÍÀ̸ç ÀÌ ¿É¼ÇÀº "<bf>createdb</bf>" ÀÌ´Ù. ±âŸ "<bf>createuser</bf>" ¶ó ´Â ¿É¼Çµµ Àִµ¥ ÀÌ ¿É¼ÇÀº ´Ù¸¥ À¯Àú¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» ÁØ´Ù. ¶ÇÇÑ, "template1" ¿¡ Á¢¼ÓÀ» À§ÇÑ ¿É¼Ç "<bf>-u</bf>"¸¦ ÁÖ¾î¾ß ÇÏ¸ç ¿É¼ÇÀ» ÁØ ÈĺÎÅÍ´Â °èÁ¤°ú Æнº¿öµå¸¦ ¹¯´Â´Ù. ÀÌ ¿É¼ÇÀ» ÁÖ´Â ÀÌÀ¯´Â pg_hba.conf ¿¡ "crypt" Á¢±Ù Á¦¾î ¸Þ¼Òµå¸¦ ÁÖ¾ú±â ¶§¹®ÀÌ´Ù. <tscreen><verb> postgres]$ psql -u template1 Username : postgres Password : ......... template1=> create user nogadax with password 'qwert' createdb ; CREATE USER template1=>\q postgres]$ </verb></tscreen> <p><bf>4.</bf> »ý¼ºµÈ nogadax À¯Àú·Î template1 µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÑ µÚ "nogadax"ÀÇ µ¥ÀÌÅͺ£À̽º ¸¦ »ý¼ºÇÏÀÚ. µ¥ÀÌÅͺ£À̽º¸íÀº "test" ¶ó°í °¡Á¤ÇÑ´Ù. <tscreen><verb> postgres]$ psql -u template1 Username : nogadax Password : .............. template1=>create database test; CREATE DATABASE template1=>\q postgres]$ psql -u test Username : nogadax Password : ................ test=> \q postgres]$ </verb></tscreen> </article>