以下为redhat8.0上安装postgresql实录
1.下载8.0.1源代码包
2.installation
./configure
make
su
make install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
3.
自启动
复制源代码解压包下的contrib/start-scripts/linux至/etc/init.d/下,修改名字为postgres并改成可执行权限,以后可以使用
/etc/init.d/postgresql start 启动
4.
可以使用以下命令创建测试数据库
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
5.
共享内存---信号量等设置
ipcs命令显示系统的ipc对象使用情况
Linux
在 2.2 内核里缺省的共享内存限制( SHMMAX 和 SHMALL)都是 32 MB, 但是你可以在 proc 文件系统里修改这些值(不用重起)。 比如,要允许 128 MB:
$ echo 134217728 >/proc/sys/kernel/shmall
$ echo 134217728 >/proc/sys/kernel/shmmax
你可以把这些命令放到一个引导时运行的脚本中。
另外,如果你的系统里有的话,你可以使用 sysctl 来控制这些参数。 查找一个叫 /etc/sysctl.conf 的文件,然后再它里面加下面这样的几行:
kernel.shmall = 134217728
kernel.shmmax = 134217728
通常在引导的时候会处理这个文件, 但你也可以稍后明确调用 sysctl。
其他参数对任何应用来说都足够了。 如果你想自己查看,你可以看看下面几个文件: /usr/src/linux/include/asm-
xxx/shmparam.h 和 /usr/src/linux/include/linux/sem.h.
6.
使用SSL进行通讯(postgresql文档16.7)
1) 制作证书请求
openssl req -new -text -out server.req
2) 转化私钥文件为server.key
openssl rsa -in privkey.pem -out server.key
rm privkey.pem
3) 生成证书
openssl req -x509 -in server.req -text -key server.key -out server.crt
chmod og-rwx server.key
4) 把证书和密钥拷贝到系统使用他们的地方
cp ..../server.crt /usr/local/pgsql/data
cp ..../server.key /usr/local/pgsql/data
cd /usr/local./pgsql/data
chown postgres.postgres server.crt
chown postgres.postgres server.key
7.
让192.168.0.1/24网段可以连入
1) 修改postgresql.conf 修改如下行:
listen_addresses = '*'
2) 修改pg_hba.conf,添加如下行:
hostssl all all 192.168.0.1/24 trust
8.
给postgres添加一个口令
1) 进入命令方式
/usr/local/pgsql/bin/pgsql mydb
2) 修改密码
alter user postgres password 'yourpass' (默认是md5的)
可以通过select * from pg_shadow表查看。
3) 修改pg_hba.conf文件为
hostssl all all 192.168.0.1/24 md5
9. 使root用户在本地以postgres用户登录
1) 修改/usr/local/pgsql/data目录下的文件pg_hba.conf
local all all ident omicron
2) 修改/usr/local/pgsql/data目录下的文件pg_ident.conf 添加
omicron root postgres
3) 重启/etc/init.d/postgresql restart
4) 访问数据库时使用命令/usr/local/pgsql/bin/psql mydb -U postgres
10. 系统表----系统表是关系型数据库存放结构元数据的地方, 比如表和字段,以及内部登记信息等。
PostgreSQL 的系统表就是普通表。 你可以删除然后重建这些表,增加列,插入和更新数值, 然后彻底把你的系统搞垮。 我们不应该手工修改系统表,通常总有 SQL 命令可以做这些事情。
在 pg_database 里有两个有用的标志可以用于每个数据库: 字段 datistemplate 和 datallowconn。 datistemplate 表示该数据库是准备用做 CREATE DATABASE 的模板的。 如果设置了这个标志,那么该数据库可以由任何有 CREATEDB 权限的用户克隆;如果没有设置,那么只有超级用户和该数据库的所有者可以克隆它。 如果 datallowconn 为假,那么将不允许与该数据库发生任何新的连接(不过现有的会话不会因为把该标志设置为假而被杀死)。 template0 数据库通常被标记为 datallowconn = false 以避免对它的修改。 template0 和 template1都应该总是标记为 datistemplate = true。
修改标记使用语句:UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
11.
系统常用的SQL命令
12. md5()散列函数
update operator set password='md5' || substring(md5('yourpass') from 1 for 20);