Linux 安装 PostgreSQL 教程

Linux PostgreSQL 卸载安装教程和使用方法

卸载

sudo apt-get --purge remove postgresql\*
# 删除用户
userdel -rf postgres

安装教程

自动安装

1、设置系统环境变量 (可以跳过,推荐跳过)

网上说这么做能让 postgresql 将数据库编码默认为 utf-8。但是好像一点用都没有,我为此把 postgresql 卸载重装了n遍,每次数据库编码都默认为 LATIN1。所以我不推荐这么做,安装好后,可以手动修改数据库默认编码。

在文件/etc/profile 末尾添加如下代码:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

执行并检查,确认设置已生效。防止安装的数据库编码为拉丁文,不支持中文。

source /etc/profile
locale	# 列出变量

2、自动安装

apt-get install postgresql

# 如果找不到资源,更新 apt-get
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update

3、进入数据库

postgresql 在 Linux 上自动创建了一个系统用户和一个的数据库用户,用户名都是 postgres 。要进入数据库,必须先登录系统用户 postgres,再登录数据库用户。

# 切换系统用户
sudo su - postgres
# 进入数据库,默认使用系统用户名登录数据库,所以无需指定用户名。
psql

# 如果数据库进不去,可能数据库启动失败,手动启动也失败,只能卸载重装(很快的)

可通过命令行前缀知道当前所在环境:

Linux 的 超级用户命令行前缀:用户名@主机名: # ;普通用户命令行前缀:用户名@主机名: $

PostgreSQL 的 超级用户命令行前缀:数据库名=#;一般用户:数据库名=>

4、修改数据库编码

进入数据库,输入命令 \l 查看全部数据库。可以看见三个数据库,其编码 Encoding 都是 LATIN1, 即拉丁文。创建数据库时,其实是拷贝一份 template1 数据库,所以只需要修改 template1 的编码,以后创建数据库就默认是 utf-8 了。

# 修改数据库编码。注意这是一个命令,SQL 语法允许分行,命令以分号结束。
update pg_database 
set (encoding, datctype, datcollate)=(6, 'en_US.UTF8','en_US.UTF8') 
where datname = 'template1';

源码安装(不推荐)

源码安装教程不是我写的,我也没实践过,不知道效果,只是复制到这里备用。

1、下载安装包 下载地址 2、上传安装包到服务器上 3、解压安装包

tar -xvzf postgresql-10.1-1-linux-x64-binaries.tar.gz

解压出来之后目录为pgsql 4、移动解压文件到指定目录 在opt目录下创建一个pgsql的文件夹,将刚才解压的文件复制到这个目录下 现在pgsql的安装目录就是/opt/pgsql/pgsql 5、创建pgsql用户并设置密码

[root@localhost pgsql]# useradd postgres
[root@localhost pgsql]# passwd postgres

密码暂定123456 注意:这里设置密码是linux用户postgres的登录密码,不是pgsql服务器的密码。 6、创建数据目录

[root@localhost opt]# mkdir pgsql_data

8、然后切换到postgres用户来操作数据库,pgsql数据库就以postgres为默认用户。

[root@localhost opt]# su - postgres

9、配置环境变量,将pgsql的bin目录加至环境变量中,方便直接使用pgsql相关命令。

[postgres@localhost ~]$ vim /etc/profile

然后数据 i 进入编辑模式,在文件的最后一行加入pgsql的bin的目录

export PGDATA=/opt/pgsql/pgsql/bin

然后Esc,退出编辑模式

:wq     # 保存并退出

如果出现下面的情况,说明当前用户没有权限,需要切换成root用户,然后再重新操作一遍即可。 然后刷新文件

source /etc/profile

10、初始化数据库 先切换成postgres用户 我现在已经进入到了/opt/pgsql/pgsql 的目录下了 然后执行初始化数据库的命令

[postgres@localhost pgsql]$ bin/initdb -D /opt/pgsql_data/

等待执行完毕,没什么问题就初始化成功了,会出现以上的提示,最后会出现这个命令,就是让你用这个命令就可以启动数据库了,下一步做启动的具体说明。 bin/pg_ctl -D /opt/pgsql_data/ -l logfile start

这里-l指定日志文件位置,这里直接输出当前目录下的logfile中,这个可以自己指定,这里-D指定数据目录,默认如果不加数据目录直接报错找不到,可以在环境变量配置文件中加入一行: export PGDATA=/opt/pgsql_data 然后source刷新即可,这样pgsql会自动去找PGDATA环境变量值,找不到才会报错。 11、启动数据库

bin/pg_ctl -D /opt/pgsql_data/ -l logfile start

启动的时候如果报下面这个错误,说明权限不够, 执行这个命令进行赋权,注意要在root的用户下操作。

[root@localhost opt]# chmod -R 777 pgsql

然后再次执行启动的命令,ok,数据库启动成功。 执行查看进程的命令查看

[postgres@localhost pgsql]$ ps -ef | grep postgres

就可以看到相关进程如下: pgsql默认的端口号为5432,通过netstat命令或者lsof命令都可以看到监听情况:

[postgres@localhost pgsql]$ lsof -i:5432

[postgres@localhost pgsql]$ netstat -an | grep 5432

现在可以看到pgsql默认监听的是localhost或127.0.0.1,目前只能本机访问,如果远程访问就连接不上了,具体的配置文件是data目录下的postgresql.conf,可以通过修改这个配置文件来调整各个参数,比如:listen_addresses可以修改绑定的地址,默认是localhost,port可以修改监听的端口号,默认是5432,max_connections可以修改最大客户端连接数量,默认是100等等。

停止postgresql的命令为:

/opt/pgsql/pgsql/bin/pg_ctl -D /opt/pgsql_data/ stop 

12、配置远程连接的操作 使用命令

find / -name postgresql.conf

找到 postgresql.conf

[postgres@localhost pgsql_data]$ vim postgresql.conf 

然后再数据命令

/listen_addresses

查找listen_addresses所在位置 修改参数: 修改pg_hba.conf文件的内容:

[postgres@localhost pgsql_data]$ vim pg_hba.conf 

可访问的用户ip段 在文件末尾加入:

host  all  all  0.0.0.0/0  md5

然后再重新启动数据库使之生效即可。 停止postgresql的命令为:

/opt/pgsql/pgsql/bin/pg_ctl -D /opt/pgsql_data/ stop 

启动postgresql的命令为:

/opt/pgsql/pgsql/bin/pg_ctl -D /opt/pgsql_data/ -l logfile start

查看进程

ps -ef | grep postgres

将端口添加到防火墙

firewall-cmd --permanent --add-port=5432/tcp

重启防火墙

systemctl restart firewalld

13、命令行界面简单操作 pgsql和mysql一样可以通过交互式提示符连接操作,连接方式如下:

/opt/pgsql/pgsql/bin/psql -h 127.0.0.1 -d postgres -U postgres -p 5432

其中-h参数指定服务器地址,默认为127.0.0.1,默认不指定即可,-d指定连接之后选中的数据库,默认也是postgres,-U指定用户,默认是当前用户,-p 指定端口号,默认是"5432",其它更多的参数选项可以执行: ./bin/psql --help 查看 登录进去默认界面如下所示: 命令提示符前面的就是当前的数据库,使用 \l 查看当前的数据库列表 默认postgres,template0和1这3个库是不允许操作的,创建新的数据库执行:

CREATE DATABASE test WITH OWNER=postgres ENCODING='UTF-8'; 

这样就创建好了数据库test,然后可以执行命令:

\c test 

切换当前数据库为test,然后执行

\d 

可以查看当前数据库下的所有表: 创建一个简单的数据表可以执行下面的命令: 创建表之后可以使用

\d student;

查看表的详细信息,如下: 现在可以插入一条测试数据: INSERT INTO student (id, name, number) VALUES (1, ‘张三’, ‘1023’);

然后可以查询这条数据: SELECT * FROM student WHERE id=1; 最后可以执行

\q 

退出交互式界面 14、如果远程连接报错: FATAL: password authentication failed for user “连接用户名” 解决方法 1、编辑pg_hba.conf,将md5认证修改成trust认证,编辑后退出保存 进入pgsql_data目录,然后编辑pg_hba.conf文件 2、执行pg_ctl reload加载生效,要进入bin目录下,再执行重新加载的命令 3、psql连接,用alter role修改密码 4、退出psql 5、编辑pg_hba.conf,将turst认证修改成md5认证,编辑后退出保存 6、执行pg_ctl reload加载生效

以上就是安装的详细步骤,以及我安装中出现的问题和解决的方案,希望能够帮助你们。


使用

postgresql 有两套命令,一套在linux 终端上,一套在 数据库 shell 上称为 SQL 语句。

数据库中使用的命令,是一套完整的 SQL 语句。

\l: 列出数据库

\c databasename切换数据库

\conninfo: 查看当前数据库连接信息:用户、端口号、IP

\d: 列出表格

create database name创建数据库,默认属于当前用户。使用 template1 创建。

drop database name 删除数据库

Linux postgresql 数据库操作命令

createuser name :创建数据库用户

psql -c "ALTER USER ubantu WITH PASSWORD '123456'" 为用户修改密码

psql -d dbname -U username: 进入数据库shell

详细教程见菜鸟教程:https://www.runoob.com/postgresql/postgresql-syntax.html

posted @ 2021-09-15 18:47  流水自净  阅读(1798)  评论(0编辑  收藏  举报