Skip to content
目录

PostgreSQL

Systemd

使用 Systemd 管理非二进制发行版安装方式时的 PostgreSQL。

ini
[program:postgresql]
command = /path/to/pg_ctl -D /path/to/data/dir -l /path/to/logfile start
process_name = %(program_name)s
numprocs = 1
directory = /path/to/install/dir
umask = 022
autostart = true
autorestart = true
user = postgres
redirect_stderr = true
stdout_logfile = /var/log/supervisor/postgresql.log
stdout_logfile_maxbytes = 100MB

SQL备注

  1. 创建用户

    sql
    create user <USER> with password '<PASSWORD>';
    
  2. 将数据库 DBNAME 的所有权限赋予给用户 USER

    sql
    GRANT ALL PRIVILEGES ON database <DBNAME> TO < USER >;
    
  3. 将数据库 DBNAME 的所有者改为 USER

    sql
    ALTER DATABASE <DBNAME> OWNER TO <USER>;
    
  4. 将表中 updated_at 字段值为 null 的记录的 updated_at 字段值更新为 update_at(int 型的 Unix 时间戳) 字段对应的时间戳。

    sql
    update orders
    set updated_at = to_timestamp(update_at)
    where updated_at is null;
    

命令行

shell
$ psql -d lmcw
  • -d 指定数据库。
  • -U 指定登录用户名。
  • -W 指定登录密码。
  • -h 指定服务器地址。
  • -p 指定服务器端口。

数据库连接

sql
-- 查询PG数据库连接情况
select datname,usename,application_name,client_addr,client_hostname,state from pg_stat_activity;
-- 查询连接总数
select count(*) from pg_stat_activity;
-- 杀死进程释放连接
select pg_terminate_backend(<PID>);
-- 杀死所有的空闲连接
select pg_terminate_backend(pid) from pg_stat_activity where state='idle';