安装
sudo apt-get install postgresql
安装完成后,默认会:
- 创建名为 postgres 的 Linux 用户
- 创建名为 postgres、不带密码的默认数据库账号作为数据库管理员
- 创建名为 postgres 的数据库
安装完成后的一些默认信息如下:
config /etc/postgresql/9.5/main
data /var/lib/postgresql/9.5/main
locale en_US.UTF-8
socket /var/run/postgresql
port 5432
安装后 Postgres 会自动启动
配置数据库以允许远程连接访问
安装完成后,默认只能本地才能连接数据库,其他机子访问不了,需要以下步骤让其他机子访问
a. 修改监听地址
sudo vi /etc/postgresql/9.5/main/postgresql.conf
将 listen_addresses = 'localhost' 的注释去掉并改为 listen_addresses = '*'
b. 修改可访问用户的IP段
sudo vi /etc/postgresql/9.5/main/pg_hba.conf
在文件末尾添加: host all all 0.0.0.0 0.0.0.0 md5 ,表示允许任何IP连接
c. 重启数据库
sudo /etc/init.d/postgresql restart
这样就可以通过其他机器访问了
以默认管理员账号 postgres 登录
安装后有一个不需要密码的管理员账号 postgres 可以登录
sudo -u postgres psql
设置密码
alter user postgres with password '123456';
一些基本命令
password: 设置密码
q: 退出
h: 查看 SQL 命令的解释,比如 h select
?: 查看 psql 命令列表
l: 列出所有数据库
c [database]: 连接其他数据库
d: 列出所有表格
d+: 列出更详细信息
d [table]: 列出某一张表格的结构
du: 列出所有用户
dS: 列出系统信息
dn: 列出 schema 信息
e: 打开文本编辑器
conninfo: 列出当前数据库和连接的信息
输出格式可以通过 pset 设置
添加新用户、新数据库、新表、新 Schema
create user my_user with password '123456';
create database my_db owner my_user;
grant all privileges on database my_db to my_user;
## 退出后用 my_user 登录 my_db
CREATE TABLE my_table (
id SERIAL PRIMARY KEY,
name VARCHAR(20) NOT NULL,
salary INTEGER,
birthday timestamp default('1970-01-01 00:00:00')
);
d ## 可以看到 my_table
d my_table ## 查看 my_table 的结构
CREATE SCHEMA my_schema;
GRANT ALL ON SCHEMA my_schema TO my_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA my_schema TO my_user;
CREATE TABLE my_schema.my_table_2 (
id VARCHAR(20) NOT NULL,
name VARCHAR(20),
salary INTEGER,
birthday timestamp default('1970-01-01 00:00:00'),
constraint pk_tbl_primary primary key (id, name)
);
d ## 看不到 my_table_2
d my_schema.* ## 可以看到 my_table_2
alter user my_user set search_path to my_schema; ## 改变用户的默认 schema
## 退出后重新以 my_user 登录 my_db
d ## 可以看到 my_table_2 了,因为现在 my_user 的默认 schema 改成了 my_schema
SHOW search_path;
dn ## 查看 schema
另一种链接方式
psql postgresql://username@hostname:port/database?sslmode=require