psql -U postgres -d postgres -h 127.0.0.1
\l
# 创建一个名为 mydb 的数据库
create database mydb;
# \c 数据库名
\c mydb
# 删除前 先确保数据库没有被连接
drop database mydb;
1. PostgreSQL中三种自增列sequence,serial,identity区别
2. 创建表
create table test(id serial primary key, name varchar(255));
insert into test(name) values('Anne');
\d
\d test(表面)
PostgreSQL 模式(Schema)可以理解为是一个表的集合(类似于Oracle的表空间概念)。
一个模式可以包含视图、索引、数据类型、函数和操作符等。
相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。
使用模式的优势:
模式类似于操作系统层的目录,但是模式不能嵌套。
1. 创建前(有一个默认的public)并且之前创建的test表也在其中
2. 创建一个新的Schema
create schema newSchema;
3. 在新的Schema中在创建一张表test
create table newSchema.test(id serial primary key, name varchar(255));
如果您在生产环境中使用PostgreSQL,请务必采取预防措施以确保用户的数据不会丢失。
1. 登录
2. 注意 要在shell控制台中执行操作而不是数据库控制台
PostgreSQL提供了pg_dump实用程序来简化备份单个数据库的过程。必须以对要备份的数据库具有读取权限的用户身份运行此命令。
备份格式有几种选择:
*.bak: 压缩二进制格式
*.sq1: 明文转储
*.tar: tarball
#备份数据库
$ pg_dump -U postgres -f /tmp/postgres.sql postgres(导出postgres数据库保存为postgres.sq1)
$ pg_dump -U postgres -f /tmp/postgres.sql-t test postgres(导出postgres数据库中表test的数据)
$ pg_dump -U postgres -F t -f /tmp/postgres.tar postgres(导出postgres数据库以tar形式压缩保存为postgres.tar)
#恢复数据库
$ psql -U postgres -f /tmp/postgres.sql bk01(恢复postgres.sq1数据到bk01数据库)
#pg_restore--从pg_dump创建的备份文件中恢复PostgreSQL数据库,用于恢复由pg_dump转储的任何非纯文本格式中的PostgreSQL数据库。
$ pg_restore-Upostgres-dbk01/tmp/postgres.tar(恢复postgres.tar数据到bk01数据库)
1. 通过运行以下命令将数据库的内容转储到文件中。替换dbname为要备份的数据库的名称。
# 通过-f 指定文件输出目录
pg_dump -f /usr/local/src/mydb.sql mydb;
1. 删除已经备份的mydb数据库
2. 创建一个新的空数据库(mydb2)
3. 恢复数据库(-f 指定备份的文件路径)
psql -U postgres -f /usr/local/src/mydb.sql mydb2;
可以看到数据恢复成功
#查看用户
\du
#创建用户并设置密码
CREATE USER 'username' WITH PASSWORD 'password' ;
CREATE USER test WITH PASSWORD 'test';
#修改用户密码
$ ALTER USER ' username' WITH PASSWORD ' password' ;
#数据库授权,赋予指定账户指定数据库所有权限
$ GRANT ALL PRIVILEGES ON DATABASE ' dbname' TO ' username' ;
#将数据库mydb权限授权于test
GRANT ALL PRIVILEGES ON DATABASE mydb TO test;
#但此时用户还是没有读写权限,需要继续授权表
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO xxx;
#注意,该sq1语句必须在所要操作的数据库里执行
#移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb from test
#删除用户
drop user test
1. 注意: 先切换到需要操作的数据库里
2. 查看所有用户
2. 创建用户
create user coke with password 'coke';
1. 修改密码
alter user coke with password 'new_coke';
2. 使用新密码登录
psql -U coke -d mydb2 -h 127.0.0.1;
3. 执行查询sql
新创建的用户没有任何权限,需要进行权限授权
1. 数据库授权,赋予指定账户指定数据库所有权限
grant all privileges on database mydb2 to coke;
2. 但此时用户还是没有读写权限,需要继续授权表
grant all privileges on all tables in schema public to coke;
3. 测试(已经有权限了)
revoke all privileges on database mydb2 from coke;
revoke all privileges on database mydb2 from coke;
drop user coke;