psql工具使用及数据库常用维护管理

2022-05-21 21:18:41 浏览数 (1)

代码语言:javascript复制
### 六 psql工具使用及数据库常用维护管理

#### 一 psql工具的使用

##### 1 用psql连接数据库

~~~bash
[postgres@Centos ~]$ psql -h localhost -p 5432 -d postgres -U postgres
psql (13.2)
Type "help" for help.

postgres=# 

~~~



其中,

- psql是PostgreSQL软件安装家目录下的bin路径下的可执行程序;
- -h选项表示host,要连接数据库服务器名或者IP地址;如果要访问的数据库在远端,不在本地服务器上,则这里应该用那台机器的IP地址;如果是云服务器的话,则用云服务商提供的域名字符串即可;
- -p选项表示port,数据库运行在哪个端口上,默认是5432,这个可以在postgres.conf配置文件里修改,但是需要restart数据库才生效;
- -d选项表示database,我们要连接访问的数据库名;
- -U选项表示username,我们以哪个用户来访问数据库。

因此,上述命令表示的是以postgres用户连接监听运行在本地机器上的5432的名为postgres的数据库。命令行上,并没有要求输入数据库密码,为什么?因为我们的pg_hba.conf文件里配置了



~~~sql
postgres=# create table pg_test(id int,name varchar(10));
CREATE TABLE
postgres=# insert into pg_test values(1,'huangwei');
INSERT 0 1
postgres=# 

~~~

#### 二 数据库常用维护管理命令

##### 1 查看数据库版本号:

~~~bash
postgres=# select version();
                                                 version                                                 
---------------------------------------------------------------------------------------------------------
 PostgreSQL 13.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)


~~~

##### 2 查看所有数据库信息:

~~~
postgres=# l 
~~~

##### 3 查看数据库启动时间信息:

~~~bash
postgres=# select pg_postmaster_start_time();
   pg_postmaster_start_time    
-------------------------------
 2021-12-30 10:41:26.094734 08
(1 row)

~~~

##### 4 查看用户信息:

~~~bash
postgres=# du
                                   List of roles
 Role name |                         Attributes                         | Member of 
----------- ------------------------------------------------------------ -----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

postgres=# 

~~~

##### 5 显示所有的表:

~~~bash
postgres=# c postgres
You are now connected to database "postgres" as user "postgres".
postgres=# d
          List of relations
 Schema |  Name   | Type  |  Owner   
-------- --------- ------- ----------
 public | pg_test | table | postgres
(1 row)

postgres=# 

~~~

##### 6 查看表大小:

~~~bash
postgres=# dt  pg_test;
                              List of relations
 Schema |  Name   | Type  |  Owner   | Persistence |    Size    | Description 
-------- --------- ------- ---------- ------------- ------------ -------------
 public | pg_test | table | postgres | permanent   | 8192 bytes | 
(1 row)

postgres=# 

~~~

##### 7 查看表结构:

~~~bash
postgres=# d pg_test;
                     Table "public.pg_test"
 Column |         Type          | Collation | Nullable | Default 
-------- ----------------------- ----------- ---------- ---------
 id     | integer               |           |          | 
 name   | character varying(10) |           |          | 


~~~

##### 8 查看索引大小:

~~~bash
postgres=# create index idx_id_pg_test on pg_test(id);
CREATE INDEX
postgres=# di
                  List of relations
 Schema |      Name      | Type  |  Owner   |  Table  
-------- ---------------- ------- ---------- ---------
 public | idx_id_pg_test | index | postgres | pg_test
(1 row)

postgres=# di  idx_id_pg_test
                                    List of relations
 Schema |      Name      | Type  |  Owner   |  Table  | Persistence | Size  | Description 
-------- ---------------- ------- ---------- --------- ------------- ------- -------------
 public | idx_id_pg_test | index | postgres | pg_test | permanent   | 16 kB | 
(1 row)

postgres=# 

~~~

##### 9 创建新用户:

~~~bash
postgres=# create user t_user login password 't_user';
CREATE ROLE
postgres=# 

~~~

创建1个新用户t_user,具有login访问数据库的权限,密码跟用户名相同。执行该命令的用户,必须得有create user的权限。

##### 10 创建和使用数据库:

~~~bash
postgres=# create database testdb owner t_user;
CREATE DATABASE
postgres=# c testdb t_user
You are now connected to database "testdb" as user "t_user".
testdb=> create table test_table(id int);
CREATE TABLE
testdb=> 

~~~

创建名为testdb的数据库,其owner是上面创建的用户t_user。然后,以t_user来访问testdb数据库,并且创建了一张表。执行该命令的用户,必须得有create database的权限。

##### 11 查看视图、函数、表空间

分别是dv,df,db

~~~bash
testdb=> db
       List of tablespaces
    Name    |  Owner   | Location 
------------ ---------- ----------
 pg_default | postgres | 
 pg_global  | postgres | 
(2 rows)

testdb=> df
                       List of functions
 Schema | Name | Result data type | Argument data types | Type 
-------- ------ ------------------ --------------------- ------
(0 rows)

testdb=> 

~~~



0 人点赞