代码语言: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=>
~~~