***用户创建修改***
postgres 默认用户是postgres,为超级用户。
第一步:先以postgress 登录
1.以指定用户登录
psql -U '用户名'
2.创建数据库新用户
CREATE USER 用户名 WITH PASSWORD '*****';
\password [username]
3.授予用户数据库权限
GRANT ALL PRIVILEGES ON DATABASE 数据库名 TO 用户名;
4.改密码
alter user postgres with password 'postgres';
5.查看当前连接的用户名
select * from current_user;
6.查看所有用户
select * from pg_user;
7.重命名用户
alter user [username] rename to [newusername];
8.删除用户
drop user username;
***数据库***
1.查看数据库大小
select pg_size_pretty(pg_database_size('postgres'));
2.查看当前连接的数据库
select current_database();
切换库\c 库名
3.浏览数据库表对象信息
\d \d+
4.创建数据库
create database jwdb with owner jwadm encoding 'UTF8' tablespace tbls_jw;
5.删除数据库
drop database DbName;
***模式***
1.查询某个模式下的所有表
select tablename from pg_tables where schemaname = 'htest' order by tablename;
2.修改模式变量
alter role postgres set search_path to htest,"$user",public;
3.临时设置模式变量
set search_path to yun,"$user",public;
***用户权限***
1.创建新用户并为其赋权
create user [username] with superuser;
2.修改用户权限
alter role [username] with nosuperuser;
3.查看某个用户权限
select * from information_schema.table_privileges where grantee='username';
\du
4.赋给用户某张表的所有权限
GRANT ALL ON tablename TO user;
5.赋给用户某个数据库的所有权限
GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;
6.撤销用户权限
REVOKE privileges ON tablename FROM user;
7.删除用户
drop owned by root cascade;
drop user root;
***表***
1.创建一张表(复制一张表)
create table test7 (like test4 including all);
create table test5 as select * from test4 with no data;
***表空间***
1.创建表空间
create database dbname tablespace tbsname;
2.删除表空间
DROP TABLESPACE name;
3.移动表到表空间
alter table tabname set tablespace tbsname;
4.临时表空间的创建
mkdir /pgdata/tbls/tmptbs
create tablespace tmptbs1 location '/pgdata/tbls/tmptbs1';
alter role all set temp_tablespaces='tmptbs1';
***模式***
1.重命名模式
alter schema name rename to newname;
2.修改模式属组
alter schema name owner to newowner;
***参数***
1.某项参数查询
select * from pg_settings where name in (‘work_mem’);
2.查询postgresql.conf最近修改时间
select 'stat '||setting||' |grep Modify' from pg_settings where name ='hba_file';
再在操作系统层面执行
***编码***
1.查看客户端编码
show client_encoding;
2.创建不同编码的数据库
create database dbtest with encoding = 'UTF8' LC_CTYPE = 'en_US.UTF-8' LC_COLLATE = 'en_US.UTF-8' template = template0;
3.初始化创建不同编码数据库
需要修改操作系统的编码值
LC_ALL > LC_* > LANG
export LC_ALL="zh_CN.GB2312"
initdb -D /pgdata/pgtest/pgzf2/ -E EUC_CN --locale=C
**会话**
1.查看当前会话连接数
select count(*) from pg_stat_activity
2.会话连接最大值
show max_connections;
**切换wal日志**
1.切换当前的wal日志
select pg_switch_wal();