linux下安装postgresql 9.6
零、查看centos系统版本:

一、获取RPM源,执行命令:
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
二、安装Postgresql9.6相关服务
yum install postgresql96-server postgresql96-contrib postgresql96-devel
三、查看是否安装成功
rpm -qa | grep postgres
四、初始化数据库
初始化安装:
数据目录为 /var/lib/pgsql/9.6/data/
程序目录为 /usr/pgsql-9.6/bin
初始化数据库:
[root@MyCentos1 ~]# cd /var/lib/pgsql/9.6/data/ [root@MyCentos1 data]# sudo -u postgres /usr/pgsql-9.6/bin/initdb -D /var/lib/pgsql/9.6/data/ 属于此数据库系统的文件宿主为用户 "postgres". 此用户也必须为服务器进程的宿主. 数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化. 默认的数据库编码已经相应的设置为 "UTF8". initdb: 无法为本地化语言环境"zh_CN.UTF-8"找到合适的文本搜索配置 缺省的文本搜索配置将会被设置到"simple" 禁止为数据页生成校验和. 修复已存在目录 /var/lib/pgsql/9.6/data 的权限 ... 成功 正在创建子目录 ... 成功 选择默认最大联接数 (max_connections) ... 100 选择默认共享缓冲区大小 (shared_buffers) ... 128MB selecting default timezone ... PRC 选择动态共享内存实现 ......posix 创建配置文件 ... 成功 正在运行自举脚本 ...成功 正在执行自举后初始化 ...成功 同步数据到磁盘...成功 警告:为本地连接启动了 "trust" 认证. 你可以通过编辑 pg_hba.conf 更改或你下次 行 initdb 时使用 -A或者--auth-local和--auth-host选项. 成功。您现在可以用下面的命令开启数据库服务器: /usr/pgsql-9.6/bin/pg_ctl -D /var/lib/pgsql/9.6/data/ -l logfile start [root@MyCentos1 data]#
五、配置postgresql服务器监听地址和端口号
#vi /var/lib/pgsql/9.6/data/postgresql.conf
把下面的2行前的#去掉
- listen_address = ‘*’
- port = 5432
【选择 】 可以设置postgresql访问权限,在文件最后加上:
#vim /var/lib/pgsql/9.6/data/pg_hba.conf
- host all all 0.0.0.0 0.0.0.0 md5
启动postgresql服务
service postgresql-9.6 start
[root@MyCentos1 ~]# service postgresql-9.6 start 启动 postgresql-9.6 服务: [确定]
六、修改postgresql默认postgres数据库密码
#su - postgres # psql postgres=# ALTER USER postgres WITH PASSWORD ‘postgres’;
或者直接
\password postgres
[root@MyCentos1 ~]# su - postgres -bash-4.1$ psql psql (9.6.16) 输入 "help" 来获取帮助信息. postgres=# ALTER USER postgres WITH PASSWORD 'postgres'; ALTER ROLE postgres=# \password postgres 输入新的密码: 再次输入:
postgres=# create user "tuser" with password '123456' nocreatedb; CREATE ROLE postgres=# create database "testdb" with owner ='tuser'; CREATE DATABASE postgres=# grant all privileges on database testdb to tuser; GRANT postgres=#
七、使用指定用户登录指定数据库,并且创建数据库,插入数据,查询
[root@MyCentos1 ~]# psql -U tuser -d testdb -h 127.0.0.1 psql (9.6.16) 输入 "help" 来获取帮助信息. testdb=> \l 数据库列表 名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限 -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres testdb | tuser | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/tuser + | | | | | tuser=CTc/tuser (4 行记录) testdb=> insert into testdb(name,age,hobby,sex) values ('xiaoxiao',23,'eat','女'); 错误: 关系 "testdb" 不存在 第1行insert into testdb(name,age,hobby,sex) values ('xiaoxiao',23... ^ testdb=> create table user(name varchar(20),age int,hobby varchar(20),sex varchar(10)); 错误: 语法错误 在 "user" 或附近的 第1行create table user(name varchar(20),age int,hobby varchar(20)... ^ testdb=> CREATE TABLE user(name VARCHAR(20),age INT,hobby VARCHAR(20),sex VARCHAR(10)); 错误: 语法错误 在 "user" 或附近的 第1行CREATE TABLE user(name VARCHAR(20),age INT,hobby VARCHAR(20)... ^ testdb=> CREATE TABLE user(name VARCHAR(20),age INT); 错误: 语法错误 在 "user" 或附近的 第1行CREATE TABLE user(name VARCHAR(20),age INT); ^ testdb=> CREATE TABLE tb_user(name VARCHAR(20),age INT); CREATE TABLE testdb=> ALTER TABLE tb_user ADD hobby VARCHAR(40); ALTER TABLE testdb=> ALTER TABLE tb_user ADD sex VARCHAR(10); ALTER TABLE testdb=> insert into tb_usuer(name,age,hobby,sex) values ('xiaoxiao',12,'eat','女'); 错误: 关系 "tb_usuer" 不存在 第1行insert into tb_usuer(name,age,hobby,sex) values ('xiaoxiao',... ^ testdb=> insert into tb_user(name,age,hobby,sex) values ('xiaoxiao',12,'eat','女'); INSERT 0 1 testdb=> select * from tb_user; name | age | hobby | sex ----------+-----+-------+----- xiaoxiao | 12 | eat | 女 (1 行记录) testdb=>
八、修改postgresql数据库配置,实现远程登录
vim /var/lib/pgsql/9.6/data/postgresql.conf
a) 监听地址
#listen_addresses = ‘localhost’改为 listen_addresses = ‘*’
b) 启用密码验证
#password_encryption = on改为password_encryption = on
c)重启数据库
#service postgresql-9.6 restart
九、修改postgresql防火墙配置:
#vim /etc/sysconfig/iptables 添加以下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#重启防火墙
#sudo service iptables restart
#关掉防火墙
#sudo service iptables stop
参考:
postgresql: psql -U username -d dbname -h 127.0.0.1 \h:查看SQL命令的解释,比如\h select。 \?:查看psql命令列表。 \l:列出所有数据库。 \c [database_name]:连接其他数据库。 \d:列出当前数据库的所有表格。 \d [table_name]:列出某一张表格的结构。 \du:列出所有用户。 \e:打开文本编辑器。 \conninfo:列出当前数据库和连接的信息。 # 创建新表 CREATE TABLE tb_user(name VARCHAR(20), age INT, date DATE); # 插入数据 insert into tb_user(name,age) values('wyc',111); # 选择记录 SELECT * FROM tb_user; # 更新数据 UPDATE tb_user set name = '李四' WHERE name = '张三'; # 删除记录 DELETE FROM tb_user WHERE name = '李四' ; # 添加栏位 ALTER TABLE tb_user ADD email VARCHAR(40); # 更新结构 ALTER TABLE tb_user ALTER COLUMN signup_date SET NOT NULL; # 更名栏位 ALTER TABLE tb_user RENAME COLUMN signup_date TO signup; # 删除栏位 ALTER TABLE tb_user DROP COLUMN email; # 表格更名 ALTER TABLE tb_user RENAME TO backup_tbl; # 删除表格 DROP TABLE IF EXISTS backup_tbl; - 迁移数据库: /usr/pgsql-9.4/bin/pg_dump -U {source user} {source database} -h {postgresql服务器的地址} -p 5432 -f /tmp/pg.sql /usr/pgsql-9.4/bin/psql -U {source user} {source database} -h {postgresql服务器的地址} -p 5432 -f /tmp/pg.sql - 多版本的psql: ls -al /etc/alternatives/ lrwxrwxrwx 1 root root 36 Sep 28 11:26 pgsql-psqlman -> /usr/pgsql-9.4/share/man/man1/psql.1 lrwxrwxrwx 1 root root 26 Sep 28 11:26 pgsql-pg_dump -> /usr/pgsql-9.4/bin/pg_dump

浙公网安备 33010602011771号