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删除了,下次启动后,数据还是有的。