- 查看Postgresql版本
apt list postgresql*
- 如果没有需要的版本,进行更新
sudo apt update
- 安装指定版本的PG
sudo apt-get install postgresql-10
sudo apt install postgresql-contrib //附加功能包
- 查看PG状态
service postgresql status
- 当PG安装完成后,会自动创建一个计算机用户postgre,那么,当PG启动后,此用户可连接PG
sudo su postgres //切换到postgre用户
psql //进入pg交互页面
- postgres是一个超级用户,拥有所有权限,同时也是数据库默认系统用户。因此,只有处于postgres或者超级用户时,才可以创建其他用户,同时创建其他用户的密码。(注:postgres默认不带密码,于是也可以给postgres添加密码)
/* 不带密码的创建 */
CREATE ROLE 用户名;
/* 带密码的创建 */
CREATE USER 用户名 WITH PASSWORD '密码';
/* 显示所有用户 */
\du
/* 更改postgres密码 */
ALTER USER postgres WITH PASSWORD '新的密码';
/* 更改其他用户密码 */
ALTER USER 用户名 WITH PASSWORD '新的密码';
/* 赋予其他用户超级用户权限 */
ALTER USER 用户名 WITH SUPERUSER;
/* 赋予其他用户普通权限 */
ALTER USER 用户名 WITH privileges;
/* 把表的所有权限给予给指定用户 */
GRANT ALL ON 表名 TO 用户名;
/* 把数据库的所有权限给予给指定用户 */
GRANT ALL PRIVILEGES ON DATABASE 数据库名 TO 用户名;
/* 撤销用户权限 */
REVOKE privileges ON 表名 FROM 用户名;
- 使用postgres来创建数据库
/* 创建数据库 */
create database 数据库名;
/* 删除数据库 */
drop database 数据库名;
/* 列举数据库 */
\l
/* 切换数据库 */
\c 数据库名
- 注意,当创建的其他用户,必须需要与Ubuntu的用户同名,才可以切换到其他用户下进行psql操作,进入PG交互界面。
sudo -i -u 用户名
psql
- 但是,又出现另一个情况,当输入psql命令时,至少有一个数据库名与该用户名相同,才能进入PG交互页面。
- 但是,创建的数据库名不同又怎么办(该数据库属于其他用户),就需要指定数据库,就需要使用如下命令:(注:第一个用户名指Ubuntu用户名,第二个指数据库其他用户名,两个用户名要相同,数据库名)
sudo -u 用户名 psql -U 用户名 -d 数据库名
通用如下办法,不用切换到其他用户:
psql -U 用户名 -d 数据库名
- 有关表的操作如下,这部分借鉴了In丶格调儿。
/* 增加让主键自增的权限 */
grant all on sequence tablename_keyname_seq to webuser;
/* 重命名一个表 */
alter table [表名A] rename to [表名B];
/* 删除一个表 */
drop table [表名];
/* 在已有的表里添加字段 */
alter table [表名] add column [字段名] [类型];
/* 删除表中的字段 */
alter table [表名] drop column [字段名];
/* 重命名一个字段 */
alter table [表名] rename column [字段名A] to [字段名B];
/* 给一个字段设置缺省值 */
alter table [表名] alter column [字段名] set default [新的默认值];
/* 去除缺省值 */
alter table [表名] alter column [字段名] drop default;
/* 插入数据 */
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
/* 修改数据 */
update [表名] set [目标字段名]=[目标值] where ...;
/* 删除数据 */
delete from [表名] where ...;
/* 删除表 */
delete from [表名];
/* 查询 */
SELECT * FROM dbname WHERE ...;
/* 创建表 */
create table (
[字段名1] [类型1] primary key,
[字段名2] [类型2],
......,
[字段名n] [字段名n] )
退出
\q
quit
- 远程登录
postgresql默认的服务端口是5432,且默认只允许localhost连接。因此,修改2个配置文件
第一个postgresql.conf
/etc/postgresql/10/main/postgresql.conf # 基础配置文件
将#listen_addresses = 'localhost'替换如下
listen_addresses = '*'
第二个pg_hba.conf
/etc/postgresql/10/main/pg_hba.conf # 修改访问配置
修改为如下内容
host all 用户名 0.0.0.0/0 md5 # 允许任意ip,通过某个用户,使用密码访问
重启数据库
sudo /etc/init.d/postgresql restart
停止为
sudo /etc/init.d/postgresql stop