Postgresql提供了很多快捷的命令,可以很方便的在命令行中使用。以\开头的命令需要进入psql执行。
数据库管理
创建用户
CREATE USER chris WITH CREATEDB ENCRYPTED PASSWORD '123456';
更改用户
ALTER USER chris WITH ENCRYPTED PASSWORD 'chris123';
列出所有的Roles
SELECT rolname FROM pg_roles;
or
\du
创建Database
CREATE DATABASE dbname;
or
createdb dbname
Grant Right
GRANT ALL PRIVILEGES ON DATABASE mydb to chris;
创建Database并指定Role
CREATE DATABASE dbname OWNER rolename;
or
createdb -O rolename dbname
删除Database
DROP DATABASE name;
or
dropdb dbname
列出所有的Databases
SELECT datname FROM pg_database;
or
\l
切换Database
\c dbname
列出所有的Tablespaces
SELECT spcname FROM pg_tablespace;
or
\db
列出当前Database的所有Tables
\dt
查看Table
\d tablename
列出当前Database的所有Functions
\df
系统管理
以下Postgresql相关的路径信息以Ubuntu为例。
启动/停止服务
启动Postgresql服务:
sudo /etc/init.d/postgresql start
停止Postgresql服务:
sudo /etc/init.d/postgresql stop
重启Postgresql服务:
sudo /etc/init.d/postgresql reload
检查Postgresql进程
ps auxww | grep ^postgres
Database Log
/var/log/postgresql
查看系统参数
show <parm_name>
查看连接数
select count(1) from pg_stat_activity;
数据库备份
pg_dump -h host -p port -U user dbname > outfile
数据库恢复
psql -h host -p port dbname < infile
开启远程访问
在postgresql.conf中更改listen_addresses:
sudo vi /etc/postgresql/9.1/main/postgresql.conf
listen_addresses="*"
在pg_hba.conf中添加host:
sudo vi /etc/postgresql/9.1/main/pg_hba.conf
host all all 0.0.0.0/0 md5
调整Database的最大连接数
Postgresql的最大连接数默认是100,如果我们同时有很多程序一起连接,有时是不够用的,可以postgresql.conf中的参数来调大连接数。
sudo vi /etc/postgresql/9.1/main/postgresql.conf
更改以下两个参数的值:
shared_buffers: 25% - 50% of the system RAM
max_connections: max_connections * work_mem < RAM
更改之后需要重启Postgresql,如果遇到SHMMAX not enough的错误,则需要更改SHMMAX的大小。
sudo vi /etc/sysctl.d/30-postgresql-shm.conf
更改kernel.shmmax的值,值的大小可以参考之前错误中的提示。
更改完之后需要reload configure:
sudo service procps start