安装PostgreSQL + 修改数据文件路径

前情提要:Ubuntu20.04


安装postpresql

参考网站

sudo apt update
sudo apt-get install postgresql -y

自动安装匹配版本,我安装的是 PostgreSQL12


运行并且查看状态

sudo systemctl start postgresql
sudo systemctl status postgresql

psql shell

参考网站
创建postgres user

sudo -i passwd postgres

切换用户

su - postgres

在postgres用户下:键入下面命令,即可进入psql

psql

修改数据文件路径

参考网站
好的我们现在在psql shell下:键入“SHOW data_directory;”,如下

postgres=# SHOW data_directory;
       data_directory        
-----------------------------
 /var/lib/postgresql/12/main
(1 row)

可以看到这是目前的postgresql 数据的存放路径,记录下来
接着可以退出psql shell了:

postgres=# \q

也退出postgres 用户
接着可以查看一下上面找到的文件路径是否存在,确认存在之后
利用root用户结束 postgresql

sudo systemctl stop postgresql
sudo rsync -av /var/lib/postgresql/12/main /newdisk/pgdata

很重要的一步!!!

切换文件及的拥有者为postgres,并且更改父文件夹的权限!!

sudo chown postgres:postgres /newdisk/pgdata
cd ../
sudo chmod 755 .

在切换到postgres用户

su - postgres

尝试一下能不能进入到自己想要设置的文件夹

cd /newdisk/pgdata

确定能进入之后
确认一下自己的initdb文件在哪个文件夹,然后做以下操作:

/usr/lib/postgresql/12/bin/initdb -D /newdisk/pgdata

成功如下:

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locales
  COLLATE:  en_CA.UTF-8
  CTYPE:    en_CA.UTF-8
  MESSAGES: en_CA.UTF-8
  MONETARY: zh_CN.UTF-8
  NUMERIC:  zh_CN.UTF-8
  TIME:     zh_CN.UTF-8
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /home/llxy/bigdisk/pgdata ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    /usr/lib/postgresql/12/bin/pg_ctl -D /home/llxy/bigdisk/pgdata -l logfile start

最后按照最后一句执行就行。


ps

插一句,因为我本意是要将整个数据文件夹放在一块外界的移动硬盘上,我没有办法更改移动硬盘的拥有者和权限,因为会影响硬盘上的很多数据,所以在我进行最后一步 logfile start时,被告知“permission denied”
无法更改硬盘的权限的情况下,我在本机电脑下创建了一个文件夹pg,将最后一句“
usr/lib/postgresql/12/bin/pg_ctl -D /home/llxy/bigdisk/pgdata -l logfile start”写入sh文件,并且把改sh文件放在pg文件夹下,
(最重要的一步)
更改文件夹和文件夹内文件的拥有者
首先退出postgres用户,然后如下:

mkdir pg
cp /..somewhere../pg.sh pg/pg.sh
sudo chown postgres pg pg/*

再次进入postgres用户

su - postgres
cd pg
sh pg.sh

终于成功啦,也就是说logfile将会被写进本地,不过我不在意logfile会在哪里

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值