1、首先下载源码postgres

wget http://ftp.postgresql.org/pub/source/v13.1/postgresql-13.1.tar.bz2

2、解压

tar xjvf  postgresql-13.1.tar.bz2

3、进入文件夹

cd postgresql-13.1/

4、 创建安装路径,一般我们都是安装在/opt/文件夹下面
这里一定要用root用户去创建

sudo su
mkdir -p /opt/pgsql-13.1

创建好后一定是root:root 用户:用户组

5、配置

./configure --prefix=/opt/pgsql-13.1 --without-readline

6、编译

make -j8

7、安装

make install

接下来是重点:
我们要创建一个linux用户postgres,用来启动postgres服务,具体如下:
1、创建postgres用户

#登录root用户
sudo su
#如果是ubuntu桌面版的话
su -i 
#添加用户
useradd postgres
#添加密码
passwd postgres

2、用户创建好以后就可以设置刚才/opt/pgsql-13.1的用户属性了

#首先创建一个文件夹,作为数据库的数据存储点
sudo su
mkdir /opt/pgsql-13.1/data
chown -R postgres /opt/pgsql-13.1

3、设置环境变量

sudo su
vim /etc/profile

在末尾打开后增加

PATH=$PATH:/opt/pgsql-13.1/bin
export PATH
LD_LIBRARY_PATH=/opt/pgsql-13.1/lib
export LD_LIBRARY_PATH
export PGDATA=/opt/pgsql-13.1/data

4、添加后source一下

source /etc/profile

5、进入postgres

su - postgres

注意,这时候命令行只有一个$符号,我们只需要输入bash后就可以了

bash
ls -l
postgres --version
#设置数据库存放数据路径的全局变量
export PGDATA=/home/kylin/postgres/data
#或者 initdb -D /home/kylin/postgres/data
#如果export了就不用加-D xxx了
initdb
pg_ctl start
#启动后postgres默认有一个用户postgres超级用户,因为它的密码是随机的,所以我们无法通过密码在其它用户上登录,所以必须通过postgres用户来登录超级用户,然后再创建一个数据库用户和数据库
psql -h 127.0.0.1

如下登录进来了

postgres@kylin-D2000:/opt/pgsql-13.1$ psql -h 127.0.0.1 
psql (12.9 (Ubuntu 12.9-0kylin0.20.04.1k1), 服务器 13.1)
警告:psql 主版本12,服务器主版本为13.
     一些psql功能可能无法正常使用.
输入 "help" 来获取帮助信息.

postgres=#

到这里以后既可以创建数据库用户和database了。
创建用户

postgres=# create user username with password '****';
CREATE ROLE
postgres=#

//修改用户名
alter user name rename to new naem
//修改密码
alter user name with password '123456';

创建数据库

postgres=# create database dbtest owner username; -- 创建数据库指定所属者
CREATE DATABASE
postgres=#

将数据库得权限,全部赋给某个用户

postgres=# grant all on database dbtest to username; -- 将dbtest所有权限赋值给username
GRANT
postgres=#

创建好之后就可退出

postgres=#\q

前面这么多工作主要为接下来做准备,其他linux用户登录数据库

psql -h 10.10.10.10 -U user -d postgres -p 5432

-h:数据库IP
-U:登录用户
-d:登录的数据库
-p:登录端口

这样你就可以在Linux下用你常用的Linux去登录数据库了

kylin@kylin-D2000:~$ psql -U shenyan -d shenyan_f -h 127.0.0.1
psql (12.9 (Ubuntu 12.9-0kylin0.20.04.1k1), 服务器 13.1)
警告:psql 主版本12,服务器主版本为13.
     一些psql功能可能无法正常使用.
输入 "help" 来获取帮助信息.

shenyan_f=> 

注意:
值得注意的是posgres数据库服务在启动的时候必须是Linux postgres用户,这是postgres数据库默认的,所以你不去创建这个用户,postgres服务自己也会去创建,他创建后密码是随机生成的,我们是无法知道的,所以也无法登录postgres,所以还是我们自己手动去创建。

如果我们用命令行安装了postgres后。默认postgres会启动,同时它自己会建立

如果你嫌麻烦直接采用docker

[root@localhost ~]# docker pull postgres # 载入镜像

[root@localhost ~]# docker run \
--name demo \
--privileged=true \
-e TZ='Asia/Shanghai' \
-e POSTGRES_USER=koji \
-e POSTGRES_DB=koji \
-e POSTGRES_PASSWORD=123456 \
-e PGDATA=/tmp/ \
-v /root/data:/tmp/ \
-p 5432:5432 \
-v /root/pem/psql-run:/docker-entrypoint-initdb.d \
-d \
postgres

然后就可以登录数据库了,登录后创建自己的数据库用户和数据库就可以了。
因为我们已经映射了data,所以只要/root/data在,即使数据库docker删除了,下次启动后,数据还是有的。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐