数据库服务器推荐配置python |
CPU 双核2.5GHz,内存 32G以上linux |
数据库服务器操做系统c++ |
CentOS Linux release 7.2.1511 (Core)sql |
数据库服务器版本数据库 |
Postgresql9.6vim |
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。api
PostgreSQL 开发者把它念做 post-gress-Q-L。数组
PostgreSQL 的 Slogan 是 "世界上最早进的开源关系型数据库"。安全
在咱们开始学习 PostgreSQL 数据库前,让咱们先了解下 ORDBMS 的一些术语:bash
数据库: 数据库是一些关联表的集合。
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余下降了性能,但提升了数据的安全性。
主键:主键是惟一的。一个数据表中只能包含一个主键。你可使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列做为一个索引键,通常用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。相似于书籍的目录。
参照完整性: 参照的完整性要求关系中不容许引用不存在的实体。与实体完整性是关系模型必须知足的完整性约束条件,目的是保证数据的一致性。
函数:经过函数,能够在数据库服务器端执行指令程序。
索引:用户能够自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。
触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器一般由INSERT或UPDATE语句触发。 多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每一个用户提供了一个数据库的"快照",用户在事务内所做的每一个修改,对于其余的用户都不可见,直到该事务成功提交。
规则:规则(RULE)容许一个查询能被重写,一般用来实现对视图(VIEW)的操做,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。
数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据
等。
全文检索:经过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。
数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL。
yum intall -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake yum install gcc* readline-devel |
adduser postgres passwd postgres 更改用户 postgres 的密码 。 新的 密码: 无效的密码: 它基于字典单词 从新输入新的 密码: passwd: 全部的身份验证令牌已经成功更新。 id postgres uid=1001(postgres) gid=1001(postgres) 组=1001(postgres) |
tar -zxvf postgresql-9.6.2.tar.gz cd postgresql-9.6.2 |
./configure --prefix=/opt/pgsql/ --with-perl--with-libxml--with-libxslt |
gmake gmake install |
mkdir /opt/pgdata chown postgres:postgres /opt/pgdata su - postgres /opt/pgsql/bin/initdb -D /opt/pgdata |
vim .bashrc export PGDATA=/opt/pgdata export PGHOME=/opt/pgsql export PATH=.:$PATH:$PGHOME/bin:$PGDATA/bin source .bashrc |
cd /opt/pgdata vim postgresql.conf 将 #listen_addresses = 'localhost' 的注释去掉并改成 listen_addresses = '*' vim pg_hba.conf 在文件末尾添加: host all all 0.0.0.0/0 md5,表示容许任何IP链接 |
pg_ctl start |
cp /opt/postgres/postgresql-9.6.2/contrib/start-scripts/linux /etc/init.d/postgresql vim /etc/init.d/postgresql #! /bin/sh # Installation prefix prefix=/opt/pgsql # Data directory PGDATA="/opt/pgdata" # Who to run the postmaster as, usually "postgres". (NOT "root") PGUSER=postgres # Where to keep a log file PGLOG="$PGDATA/serverlog" # The path that is to be used for the script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON="$prefix/bin/postmaster" # What to use to shut down the postmaster PGCTL="$prefix/bin/pg_ctl"
set -e # Only start if we can find the postmaster. test -x $DAEMON || { echo "$DAEMON not found" if [ "$1" = "stop" ] then exit 0 else exit 5 fi }
# If we want to tell child processes to adjust their OOM scores, set up the # necessary environment variables. Can't just export them through the "su". if [ -e "$PG_OOM_ADJUST_FILE" -a -n "$PG_CHILD_OOM_SCORE_ADJ" ] then DAEMON_ENV="PG_OOM_ADJUST_FILE=$PG_OOM_ADJUST_FILE PG_OOM_ADJUST_VALUE=$PG_CHILD_OOM_SCORE_ADJ" fi
# Parse command line parameters. case $1 in start) echo -n "Starting PostgreSQL: " test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 echo "ok" ;; stop) echo -n "Stopping PostgreSQL: " su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast" echo "ok" ;; restart) echo -n "Restarting PostgreSQL: " su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w" test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 echo "ok" ;; reload) echo -n "Reload PostgreSQL: " su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s" echo "ok" ;; status) su - $PGUSER -c "$PGCTL status -D '$PGDATA'" ;; *) # Print help echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2 exit 1 ;; esac
exit 0 chmod +x /etc/init.d/postgresql service postgresql start |
psql 建立用户"folio_admin"并设置密码: postgres=# create role folio_admin with password 'calis123'login; 建立数据库folio_db,全部者为folio_admin: postgres=# create database folio_db owner folio_admin; 将folio_db数据库的全部权限赋予folio_admin,不然folio_admin只能登陆psql,没有任何数据库操做权限: postgres=#grant all privileges on database folio_db to folio_admin; =================================================================== 建立okapi运行须要的数据库以及帐号信息 建立用户"okapi"并设置密码: postgres=# create role okapi with password 'okapi25'login; 建立数据库okapi,全部者为okapi: postgres=# create database okapi owner okapi; 将okapi数据库的全部权限赋予okapi,不然okapi只能登陆psql,没有任何数据库操做权限: postgres=#grant all privileges on database okapi to okapi; |
下载Navicat Premium工具尝试链接,让操做更便捷
注:若是没法链接,把防火墙端口放开
firewall-cmd --zone=public --add-port=5432/tcp --permanent firewall-cmd --reload |
psql -U pname -d database // pname 表示postgres的登陆用户名,database 则表示要访问的数据库 |
\l |
\d database / |
\d tablename/ |
\c database |
CREATE DATEBASE database_name; |
CREATE SCHEMA schema_name; |
select * from information_schema.schemata; |
select * from information_schema.tables where table_schema = 'schema_name'; |
CREATE ROLE role_name [...]; [...]为可多选角色属性参数,参数可分别为: 登录(login):具备login属性的角色能够链接数据库,一个带有login属性的角色能够等同于“数据库用户”,由于数据库用户建立的时候默认自带login属性. 超级用户(superuser):超级用户拥有至高无上的权限,可是这个权限分配的时候,必定要当心,想要建立超级用户,必须使用带超级用户的角色去建立带“超级用户”的角色 . 建立数据库(createdb):建立数据库属性,顾名思义就是拥有“建立数据库”属性的角色能够建立数据库,对于超级用户的角色来讲,自身能够建立数据库,不用带“建立数据库”属性 . 建立角色(createrole):带有“建立角色”属性的角色能够建立其余角色。通常带有“建立角色”属性的角色还能够删除和更改其余角色(删除和更改只限于普通用户) 口令(password):只有在客户认证方法要求与数据库创建链接必须使用口令的时候, 口令才比较重要. 在建立好角色后,若是须要修改的话,可使用alter role语句修改
|
将名字为schema_name的schema的全部权限给予role_name角色; grant all on schema schema_name to role_name; 将名字为schema_name的schema下面全部的表的操做权限给予role_name角色; grant all on all tables in schema schema_name to role_name;
若是你不许备将全部的权限都给予role_name角色,能够给予部分的权限,每一个权限值之间以逗号分隔,而权限的明细以下:
SELECT:该权限用来查询表或是表上的某些列,或是视图,序列。 INSERT:该权限容许对表或是视图进行插入数据操做,也可使用COPY FROM进行数据的插入。 UPDATE:该权限容许对表或是或是表上特定的列或是视图进行更新操做。 DELETE:该权限容许对表或是视图进行删除数据的操做。 TRUNCATE:容许对表进行清空操做。 REFERENCES:容许给参照列和被参照列上建立外键约束。 TRIGGER:容许在表上建立触发器。 CREATE:对于数据库,容许在数据库上建立Schema;对于Schema,容许对Schema上建立数据库对象;对于表空间,容许把表或是索引指定到对应的表空间上(在Oracle中,咱们是用quota子句或是unlimited tablespace权限来控制)。该权限与Oracle上的CREATE类权限彻底不一样了。 CONNECT:容许用户链接到指定的数据库上。 TEMPORARY或是TEMP:容许在指定数据库的时候建立临时表。 EXECUTE:容许执行某个函数。 USAGE:对于程序语言来讲,容许使用指定的程序语言建立函数;对于Schema来讲,容许查找该Schema下的对象;对于序列来讲,容许使用currval和nextval函数;对于外部封装器来讲,容许使用外部封装器来建立外部服务器;对于外部服务器来讲,容许建立外部表。 ALL PRIVILEGES:表示一次性给予能够授予的权限。 |