sql
1 #创建用户并设置密码
CREATE USER "username" WITH PASSWORD "password";
create user test with password'test';
2 # 修改用户密码
ALTER USER "username" WITH PASSWORD 'password';
alter user 用户名 with password '设置密码'
3 # 数据库授权,赋予指定账户指定数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE dbname TO "username";
grant all privileges on database dbname to '用户名';
4 # 将数据库 mydb 权限授权于 test12
GRANT ALL PRIVILEGES ON DATABASE mydb To test;
grant all privileges on database mydb to test;
5 # 但此时用户还是没有读写权限,需要继续授权表1a
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO Xxx;
grant all privileges on all tables in schema public to xxx;
6 # 注意,该sq1语句必须在所要操作的数据库里执行
7 # 移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb from test
revoke all privileges on database mydb from test;
8 # 删除用户
drop user test
登录
shell
#psql -h 服务器 -U 用户名 -d 数据库 -p 端口地址 // -U 是大写
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
$ psql (连接数据库默认用户和数据库都是postgres)
#相当于系统用户postgres以同名数据库用户的身份登录数据库这是不用输入密码的。如果一切正常系统提示符会变为"postgres=#"表示这时已经进入了数据库控制台。
数据库操作
sql
#创建数据库
CREATE DATABASE mydb;
#查看所有数据库
\l
#切换当前数据库
\c mydb
#删除数据库
drop database <dbname>
删除库可能会遇到的问题
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='testdb' AND pid<>pg_backend_pid();
执行上面的语句之后在执行DROP操作就可以删除数据库了。
上面语句说明
pg_terminate_backend用来终止与数据库的连接的进程id的函数。
pg_stat_activity是一个系统表用于存储服务进程的属性和状态。
pg_backend_pid()是一个系统函数获取附加到当前会话的服务器进程的ID
数据库表操作
创建表格时每列都必须使用数据类型。PotgreSQL中主要有三类数据类型
●数值数据类型
●字符串数据类型
●日期/时间数据类型
数值
常见数值类型包括
名字 存储长度 描述 范围
smallint 2 字节 小范围整数 -32768 到 +32767
integer 4 字节 常用的整数 -2147483648 到 +2147483647
bigint 8 字节 大范围整数 -9223372036854775808 到 +9223372036854775807
decimal 可变长 用户指定的精度精确 小数点前 131072 位小数点后 16383 位
numeric 可变长 用户指定的精度精确 小数点前 131072 位小数点后 16383 位
real 4 字节 可变精度不精确 6 位十进制数字精度
double 8 字节 可变精度不精确 15 位十进制数字精度
字符串字符串类型包括
●char(size)character(size)固定长度字符串size 规定了需存储的字符数由右边的空格补齐
●varchar(size)character varying(size)可变长度字符串size 规定了需存储的字符数
●text可变长度字符串。
日期/时间
表示日期或时间的数据类型有
●timestamp日期和时间
●date日期无时间
●time时间
其他数据类型类型还有布尔值 boolean true 或 false货币数额 money 和 几何数据等。
建表
sql
#创建表
CREATE TABLE test(id int,body varchar(100));
#在表中插入数据
insert into test(id,body) values(1,'hello,postgresql');
#查看当前数据库下所有表
\d
#查看表结构相当于desc
\d test
控制台常用命令总结
sql
\password 命令设置密码
\q 命令退出
\h 查看SQL命令的解释比如\h select。
\? 查看psql命令列表。
\l 列出所有数据库。
\c [database_name]连接其他数据库。
\d 列出当前数据库的所有表格。
\d [table_name]列出某一张表格的结构。
\du 列出所有用户。
给已存在用户赋予各种权限
赋予登录权限
sql
postgres=# ALTER ROLE bella WITH LOGIN;
ALTER ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
bella | Create DB | {}
david | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
renee | Create DB | {}
sandy | | {}
postgres=#
赋予renee 创建角色的权限
sql
postgres=# ALTER ROLE renee WITH CREATEROLE;
ALTER ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
bella | Create DB | {}
david | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
renee | Create role, Create DB | {}
sandy | | {}
postgres=#
用户操作
sql
#创建用户并设置密码
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;
#注意该sql语句必须在所要操作的数据库里执行
#移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb from test
#删除用户
drop user test
# 查看用户
\du