
正文
pg数据库查看库所属用户,pg命令行查看数据库
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何查看postgresql数据库用户
postgres=#
\du
List
of
roles
Role
name
|e5a48de588b6e799bee5baa6e997aee7ad9431333363366263
Attributes
|
Member
of
-----------+------------------------------------------------+-----------
mqis
|
Password
valid
until
infinity
|
{}
mqis_app
|
Password
valid
until
infinity
|
{}
postgres
|
Superuser,
Create
role,
Create
DB,
Replication
|
{}
postgres=#
SELECT
u.usename
AS
"User
name",
u.usesysid
AS
"User
ID",
CASE
WHEN
u.usesuper
AND
u.usecreatedb
THEN
CAST('superuser,
create
database'
AS
pg_catalog.text)
WHEN
u.usesuper
THEN
CAST('superuser'
AS
pg_catalog.text)
WHEN
u.usecreatedb
THEN
CAST('create
database'
AS
pg_catalog.text)
ELSE
CAST(''
AS
pg_catalog.text)
END
AS
"Attributes"
FROM
pg_catalog.pg_user
u
ORDER
BY
1;
-------------------------------------------------
User
name
|
User
ID
|
Attributes
-----------+---------+-------------------
mqis
|
16393
|
mqis_app
|
16397
|
postgres
|
10
|
superuser,
create+
|
|
database
(3
rows)
postgres=#
相关问答
Q1: 怎么去查找在window上默认安装的pg数据库路径
1、windows下postgresql的安装
我下载的为xxx9.2.exe一路默认安装即可。安装位置为C:\Program Files\PostgreSQL。
安装完毕后,在dos下执行命令
net user
列出当前系统用户名称。我的用户名为Administrator。
psql –U Administrator –d postgres
该命令表示通过数据库用户Administrator连接数据库postgres。
l 若显示psql不是内部或外部命令,则说明postgresql的bin文件路径没添加到windows系统中,右击“我的电脑”-”属性”-”高级”-”环境变量”-”Administrator”的用户变量,选中“PATH”,点击编辑,将”C:\Program Files\PostgreSQL\9.2\bin”添加进去,注意与前面的路径用”;”隔开。电脑重启生效。
l 若显示角色Administrator不存在,则必须在postgresql数据库中添加该用户才能使其可以登录。
在postgresql中
查询系统用户
postgres=#select* from pg_user;
查询系统中的数据库
postgres=#select* from pg_database;
说明一下:“template1”是Postgresql在初始化时自动创建的测试数据库。
创建postgresql数据库Administrator用户
方式1
在PostgreSQL中创建用户postgreSQL用户Administrator
用SQL Shell(psql)通过用户postgres登录PostgreSQL,创建用户Administrator,
postgres=#create user “Administrator”;
方式2
通过windows下dos创建postgresql用户Administrator
将PostgreSQL文件夹bin路径添加到系统环境中后重启生效.
通过windows下dos创建postgresql用户是区分大小写的。
配置客户机访问
为了配置远程主机和用户可以连接到PostgreSQL服务,你需要pg_hba.conf文件。文件包含大量注释记录用于远程访问的选项。在我们的安装示例中,我们允许局域网中任何主机的任何用户访问服务器上的数据库。为了达到这个目的,我们添加以下的一行记录到文件尾:
host all all 192.168.0.0/16 trust
这意味着所有IP地址由192.168开始的计算机可以访问所有的数据库。最简单的使配置生效的方法就是重启服务器。
在dos下操作,通过createuser –Uolduser –P newuser来创建。
比如我们想创建postgresql数据库用户Administrator。
createuser –U postgre –P Administrator
这样创建的数据库用户Administrator没有创建数据库的权利,可以通过pgAdmin III登录进行查看。
若使其可以创建数据库可以参照下面内容进行设置:
createuser –U postgre –s Administrator
这样具有创建数据库能力。
createuser的用法可以通过在dos中输入createuser –help查看。
MicrosoftWindows XP [版本 5.1.2600]
(C)版权所有 1985-2001 Microsoft Corp.
C:\Documentsand Settings\Administratorcreateuser --help
createuser创建一个新的 PostgreSQL 用户.
使用方法:
createuser [选项]... [用户名]
选项:
-c, --connection-limit=N 角色的连接限制(缺省: 没有限制)
-d, --createdb 此角色可以创建新数据库
-D, --no-createdb 此角色不可以创建新数据库(默认)
-e, --echo 显示发送到服务端的命令
-E, --encrypted 口令加密存储
-i, --inherit 角色能够继承它所属角色的权限
(这是缺省情况)
-I, --no-inherit 角色不继承权限
-l, --login 角色能够登录(这是缺省情况)
-L, --no-login 角色不能登录
-N, --unencrypted 口令不加密存储
-P, --pwprompt 给新角色指定口令
-r, --createrole 这个角色可以创建新的角色
-R, --no-createrole 这个角色没有创建其它角色的权限(默认)
-s, --superuser 角色将是超级用户
-S, --no-superuser 角色不能是超级用户(默认)
-V, --version 输出版本信息, 然后退出
--interactive 提示缺少角色名及其属性
而不是使用默认值
--replication 角色能启动复制
--no-replication 角色不能启动复制
-?, --help 显示此帮助, 然后退出
联接选项:
-h, --host=HOSTNAM 数据库服务器所在机器的主机名或套接字目录
-p, --port=PORT 数据库服务器端口号
-U, --username=USERNAME 联接用户 (不是要创建的用户名)
-w, -no-password 永远不提示输入口令
-W, --password 强制提示输入口令
臭虫报告至pgsql-bugs@postgresql.org.
C:\Documentsand Settings\Administrator
方式3
在C:\Program Files\PostgreSQL\9.2\bin文件夹下有可执行文件createuser.exe,我双击后,该文件执行一闪就关闭,只好在dos中输入cmd打开窗口,将该文件拖入窗口中,在输入“ –U postgres –P Adiminisrator”然后回车,如下图所示,即可创建数据库用户Administrator。但此时该用户不具有创建database的能力,可以通过pgAdmin III查看。
psql的用法可以通过在dos下输入psql –help查看,如下图所示。
MicrosoftWindows XP [版本 5.1.2600]
(C) 版权所有1985-2001 Microsoft Corp.
C:\Documentsand Settings\Administratorpsql --help
psql是PostgreSQL 的交互式客户端工具。
使用方法:
psql [选项]... [数据库名称 [用户名称]]
通用选项:
-c,--command=命令 执行单一命令(SQL或内部指令)然后结束
-d, --dbname=数据库名称 指定要连接的数据库 (缺省:"Administrator")
-f, --file=文件名 从文件中执行命令然后退出
-l, --list 列出所有可用的数据库,然后退出
-v, --set=, --variable=名称=值
为psql变量(名称)设定值
-V, --version 输出版本信息, 然后退出
-X, --no-psqlrc 不读取启动文档(~/.psqlrc)
-1 ("one"), --single-transaction
作为一个单一事务来执行命令文件
-?, --help 显示此帮助, 然后退出
输入和输出选项:
-a, --echo-all 显示所有来自于脚本的输入
-e, --echo-queries 显示发送给服务器的命令
-E, --echo-hidden 显示内部命令产生的查询
-L, --log-file=文件名 将会话日志写入文件
-n, --no-readline 禁用增强命令行编辑功能(readline)
-o, --output=FILENAME 将查询结果写入文件(或 |管道)
-q, --quiet 以沉默模式运行(不显示消息,只有查询结果)
-s, --single-step 单步模式 (确认每个查询)
-S, --single-line 单行模式 (一行就是一条 SQL 命令)
输出格式选项 :
-A, --no-align 使用非对齐表格输出模式
-F, --field-separator=字符串
设字段分隔符(缺省:"|")
-H, --html HTML 表格输出模式
-P, --pset=变量[=参数] 设置将变量打印到参数的选项(查阅 \pset 命令)
-R, --record-separator=字符串
设定记录分隔符(缺省:换行符号)
-t, --tuples-only 只打印记录i
-T, --table-attr=文本 设定 HTML 表格标记属性(例如,宽度,边界)
-x, --expanded 打开扩展表格输出
-z, --field-separator-zero
设置字段分隔符为字节0
-0, --record-separator-zero
设置记录分隔符为字节0
联接选项:
-h, --host=主机名 数据库服务器主机或socket目录(缺省:"本地接口")
-p, --port=端口 数据库服务器的端口(缺省:"5432")
-U, --username=用户名 指定数据库用户名(缺省:"Administrator")
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
更多信息,请在psql中输入"\?"(用于内部指令)或者"\help"(用于SQL命令),
或者参考PostgreSQL文档中的psql章节.
臭虫报告至pgsql-bugs@postgresql.org.
C:\Documentsand Settings\Administrator
Q2: linux 怎么查询postgres数据库
postgres下一些查询有时候是不同于其他数据库的。
查询版本:psql --version
进入数据库后,使用下面的方法进行查询。
(1)显示SQL语句执行时间
\timing on 退出数据库失效
(2)显示postgres中所有的表总数(包含数据库自带的)
select count(*) from pg_tables;
安装好数据库系统自带为58个。
(3)显示用户生成的数据库列表
\d
(4)显示某个表列属性
\d tablename
(5)删除表中所有数据
delete from tablename --写入日志
Truncate Table tablename --不写入日志
TRUNCATE TABLE
删除表中的所有行,而不记录单个行删除操作。
语法
TRUNCATE TABLE name
参数
name
是要截断的表的名称或要删除其全部行的表的名称。
注释
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。
如果要删除表定义及其数据,请使用 DROP TABLE 语句。
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
TRUNCATE TABLE 不能用于参与了索引视图的表。
示例
下例删除 authors 表中的所有数据。
TRUNCATE TABLE authors
(6)显示当前用户
\c
(7)显示当前数据库所有用户
\du
(8)创建用户
create user xxx with password 'xxxxxx';
(9)更改用户密码
alter user xxx with password 'yyyy';
(10)更改用户连接
\c database username
(11)更改表名
更改表名称
alter table smallint rename to integer;
(12)更改列名
更改表列名
alter table integer rename column id to id1;
(13)显示日期
show datestyle;
(14)设置日期格式
set datestyle=MDY;
(15)打印详细出错信息
postgres=# \set VERBOSITY verbose
postgres=#
postgres=#
postgres=# create table (id );
ERROR: syntax error at or near "(" at character 14
STATEMENT: create table (id );
ERROR: 42601: syntax error at or near "("
LINE 1: create table (id );
^
LOCATION: scanner_yyerror, scan.l:1044
(16)更改列属性
postgres=# alter table a1 alter column id2 set DATA TYPE int;
(17)查看帮助信息
\h alter table
(18)列显示
\x
(19)创建函数
CREATE OR REPLACE FUNCTION f_value_single()
returns void AS $_$
DECLARE
BEGIN
for i in 1..2000000 loop
insert into abc values(1,'a','a');
end loop;
return;
END;
$_$ language plpgsql;
将表名作为入参
create or replace function count(varchar)
returns bigint
as
selectcount(∗)fromquoteident($1);
language 'sql';
(20)关闭数据库3种模式
SIGTERM
不再允许新的连接,但是允许所有活跃的会话正常完成他们的工作,只有在所有会话都结束任务后才关闭。这是智能关闭。
SIGINT
不再允许新的连接,向所有活跃服务器发送 SIGTERM(让它们立刻退出),然后等待所有子进程退出并关闭数据库。这是快速关闭。
SIGQUIT
令 postgres 向所有子进程发送 SIGQUIT 并且立即退出(所有子进程也会立即退出),而不会妥善地关闭数据库系统。这是立即关闭。这样做会导致下次启动时的恢复(通过重放 WAL 日志)。我们推荐只在紧急的时候使用这个方法。
SIGKILL
此选项尽量不要使用,这样会阻止服务器清理共享内存和信号灯资源,那样的话你只能在启动服务器之前自己手工做这件事。另外,SIGKILL 直接把 postgres 杀掉,而不会等它把信号中继给它的子进程,因此我们还需要手工杀掉每个独立子进程。
Q3: postgresql数据库怎么更改其中一个数据库的拥有者?
更改拥有者:
usage()
{
cat EOF
usage: $0 options
This script set ownership for all table, sequence and views for a given database
Credit: Based on by Alex Soto
Also merged changes from @sharoonthomas
OPTIONS:
-h Show this message
-d Database name
-o Owner
EOF
}
DB_NAME=
NEW_OWNER=
PGSQL_USER=postgres
while getopts "hd:o:" OPTION
do
case $OPTION in
h)
usage
exit 1
;;
d)
DB_NAME=$OPTARG
;;
o)
NEW_OWNER=$OPTARG
;;
esac
done
if [[ -z $DB_NAME ]] || [[ -z $NEW_OWNER ]]
then
usage
exit 1
fi
for tbl in `psql -U $PGSQL_USER -qAt -c "select tablename from pg_tables where schemaname = 'public';" ${DB_NAME}` \
`psql -U $PGSQL_USER -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" ${DB_NAME}` \
`psql -U $PGSQL_USER -qAt -c "select table_name from information_schema.views where table_schema = 'public';" ${DB_NAME}` ;
do
psql -U $PGSQL_USER -c "alter table \"$tbl\" owner to ${NEW_OWNER}" ${DB_NAME} ;
done
关于pg数据库查看库所属用户和pg命令行查看数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







