Here’re the steps to install a Postgres SQL database on RedHat 9.0.
1. login as root
2. su postgres
3. mkdir /home/db
4. chown postgres /home/db and chgrp postgres /home/db
5. export PGDATA=/home/db
6. initdb
The files belonging to this database system will be owned by user “postgres”.
This user must also own the server process.
The database cluster will be initialized with locale en_US.UTF-8.
This locale setting will prevent the use of indexes for pattern matching
operations. If that is a concern, rerun initdb with the collation order
set to “C”. For more information see the Administrator’s Guide.
Fixing permissions on existing directory /home/db… ok
creating directory /home/db/base… ok
creating directory /home/db/global… ok
creating directory /home/db/pg_xlog… ok
creating directory /home/db/pg_clog… ok
creating template1 database in /home/db/base/1… ok
creating configuration files… ok
initializing pg_shadow… ok
enabling unlimited row size for system tables… ok
initializing pg_depend… ok
creating system views… ok
loading pg_description… ok
creating conversions… ok
setting privileges on built-in objects… ok
vacuuming database template1… ok
copying template1 to template0… ok
Success. You can now start the database server using:
/usr/bin/postmaster -D /home/db
or
/usr/bin/pg_ctl -D /home/db -l logfile start
7. /usr/bin/pg_ctl -D /home/db -l logfile start
bash-2.05b$ /usr/bin/pg_ctl -D /home/db -l logfile start
postmaster successfully started
bash-2.05b$ createdb test
CREATE DATABASE
bash-2.05b$ psql test
Welcome to psql 7.3.2, the PostgreSQL interactive terminal.
Type: copyright for distribution terms
h for help with SQL commands
? for help on internal slash commands
g or terminate with semicolon to execute query
q to quit
test=#
test=# CREATE TABLE films (
test(# code char(5) CONSTRAINT firstkey PRIMARY KEY,
test(# title varchar(40) NOT NULL,
test(# did integer NOT NULL,
test(# date_prod date,
test(# kind varchar(10),
test(# len interval hour to minute
test(# );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index ‘firstkey’ for table ‘films’
CREATE TABLE
test=# INSERT INTO films (code, title, did, date_prod, kind)
test-# VALUES (‘T_601’, ‘Yojimbo’, 106, DEFAULT, ‘Drama’);
INSERT 16981 1
test=# select * from films;
code | title | did | date_prod | kind | len
——-+———+—–+———–+——-+—–
T_601 | Yojimbo | 106 | | Drama |
(1 row)
bash-2.05b$ pg_ctl -D /home/db stop
waiting for postmaster to shut down……done
postmaster successfully shut down
starting it with networking
bash-2.05b$ pg_ctl -D /home/db -l logfile -o -i start
postmaster successfully started
bash-2.05b$ psql test
Welcome to psql 7.3.2, the PostgreSQL interactive terminal.
Type: copyright for distribution terms
h for help with SQL commands
? for help on internal slash commands
g or terminate with semicolon to execute query
q to quit
test=# create user tester with password ‘tester’;
CREATE USER
create table for mono test
test=# CREATE TABLE “test” (
test(# “person” character varying(256) NOT NULL,
test(# “email” character varying(256) NOT NULL
test(# );
CREATE TABLE
test=# insert into test (person, email) values(‘user1′,’users@nomail.com’);
INSERT 16984 1
test=# insert into test (person, email) values(‘user2′,’user2@nomail.com’);
INSERT 16985 1
test=# select * from test;
person | email
——–+——————
user1 | users@nomail.com
user2 | user2@nomail.com
(2 rows)
I got this error
Npgsql.NpgsqlException:
No pg_hba.conf entry for host 127.0.0.1, user tester, database tester
Severity: FATAL
in <0x00061> Npgsql.NpgsqlConnection:CheckErrors ()
in <0x0004f> (wrapper remoting-invoke-with-check) Npgsql.NpgsqlConnection:CheckErrors ()
in <0x00447> Npgsql.NpgsqlConnection:Open ()
Well, the database name should be test, but it reported “tester”. I don’t know why. I’m testing dbpage1.aspx.
OK, I added a record in pg_hba.conf to allow host from 127.0.0.1 to connect to the database, but got this error instead
Npgsql.NpgsqlException:
Database “tester” does not exist in the system catalog.
Severity: FATAL
It still thinks the database is “tester”. I need to check the connect string one more time and will shutdown Apache to see if it changes anything.
While waiting for reboot, I downloaded pgadmin, a GUI program for managing Postgres database. Nice!
Finally, I got it running on dbpage1.aspx and dbpage2.aspx. It turned out that the connect string was wrong. The original connect string was “sever=127.0.0.1;user id=tester;password=tester;dbname=test”. The correct string should be using “database=test”!
Don’t forget granting permission to the tester on the database test!
Here’s the dbpage1.aspx sample.