Postergresql常见操作
1. 安装部署 略
2. 登录数据库 查看版本
## 以管理员身份 postgres 登陆,然后通过
#psql -U postgres
#sudo -i -u postgres
$ psql xc_hzh_linan #登录xc_hzh_linan数据库
$ psql -U postgres test #以postgres用户身份,登录test数据库
psql -h localhost -p 5432 -U postgress testdb
3. 相关命令
使用反斜线作为命令前缀.
退出 \q 列出所有的数据库 \l 列出所有的数据库的大小 \l+ 更改当前连接的数据库 \c 列出当前数据库的连接信息 \connect 列出当前数据库和连接的详细信息 \conninfo 查看当前数据库里面的表和拥有者和表大小 \dt + 展示所有用户 \dg
查看所有表名的列表 \d 获取表结构 \d a 展示所有用户 \du 查看t_sms表的结构 \d t_sms 展示数据库里面的所有的表 \dt 列出所有的数据库的详细信息(包括数据库大小和字符格式) \l+ 显示用户访问权限。 \z或\dp 显示所有可设置的访问权限 \h GRAN 显示用户的对所有数据库表的详细访问权限 \dp或者\z 确认当前连接的用户为超级用户postgres,且该用户后创建角色和数据库的权限等 #select current_user; 在超级用户连接postgres后,设置不允许普通用户a连接数据库 #alter role a nologin;
使用普通用户a连接数据库正常 #\c highgo a
查看当前连接的用户名: foo=#select * from current_user; 或 foo=#select user;
查看所有用户名: foo=#\du
4、创建/删除用户及权限相关
4.1 创建用户
create role zhaobsh;
create user wzq with password '123456'; #设置用户,并设置密码
create database xc_hzh_linan owner xchzhlinan ; #创建数据库以及所属用户
drop user runoob; # 删除用户 runoob
4.2 更改用户密码
alter role zhaobsh with password 'Test6530';
or
\password zhaobsh
ALTER USER postgres WITH PASSWORD 'postgres';
-----
注:
密码postgres要用引号引起来
命令最后有分号
----
4.3 给用户添加权限
授权给用户** PostgreSQL中预定义了许多不同类型的内置权限,如:SELECT、INSERT、UPDATE、DELETE、RULE、REFERENCES、TRIGGER、CREATE、TEMPORARY、EXECUTE和USAGE。**
要做操作需登录这个用户,不然没权限 他是管理员用户
alter user asan with SUPERUSER; # 类似postgres的SUPERUSER 权限用户
#
grant all on database "GSCloud1903" to zhaobsh; #赋予用户zhaobsh数据库所有权限
grant UPDATE ON database "GSCloud1903" to zhaobsh; # 赋予用户zhaobsh数据库更新权限
/* 赋给用户表的所有权限 */
GRANT ALL ON tablename TO user;
/* 赋给用户数据库的所有权限 */
GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;
/* 撤销用户权限 */
REVOKE privileges ON tablename FROM user;
### 修改数据库的属主属组
alter database "GSCloud1903" owner to zhaobsh;
ALTER ROLE user_4 WITH CREATEROLE; /*赋予创建角色的权限*/
alter database "GSCloud1903" rename to zhaobsh; --修改schema的名称
5 数据库库表操作
5.1 查看数据库
# \L
5.2 删除数据库
postgres=# drop database test;
#如果数据库名称中包含符号-,则用双引号包括数据库名称
postgres=# drop database "test-study";
5.3 查看当前数据库
postgres# select current_database();
5.4 切换数据库
postgres# \c db
5.5 创建数据库并授权
CREATE DATABASE dbname;
postgres=# create database dbtest owner username; -- 创建数据库指定所属者
CREATE DATABASE
将数据库得权限,全部赋给某个用户
postgres=# grant all on database dbtest to username; -- 将dbtest所有权限赋值给username
设置是 supseruser 以及 登录权限
alter user zhaobsh superuser login
5.5 退出数据库
postgres# \q
数据表
5.6 显示当前数据库中的所有表
# \d
5.7 显示指定表结构
postgres# \d tableName
5.8 查表内容
seelect * from tablename;
6 数据库备份恢复操作
------------------------数据的导出:
$ pg_dump -U postgres(用户名) (-t 表名) 数据库名(缺省时同用户名) > 路径/文件名.sql
postgres@debian:~$ pg_dump -U postgres -t system_calls wangye > ./test.sql
postgres@debian:~$ ls
9.1 test.sql
-----------------------数据的导入:
导入数据时首先创建数据库再用psql导入:
$ createdb newdatabase
$ psql -d newdatabase -U postgres -f mydatabase.sql // sql 文件在当前路径下
$ psql -d databaename(数据库名) -U username(用户名) -f < 路径/文件名.sql // sql 文件不在当前路径下
$ su postgresql #切换到psql用户下
$ psql -d wangye -U postgres -f system_calls.sql # sql 文件在当前路径下
INSERT 0 1
INSERT 0 1
INSERT 0 1