summary:
安装:客户端、服务器
创建用户:系统用户、数据库用户
创建数据库
修改数据库用户密码
修改数据库用户访问数据库的权限
切换系统用户
登录控制台
登录数据库
--------------------------------------------------------
1. 安装postgresql客户端:
sudo apt-get install postgresql-client
安装postgresql服务器:
sudo apt-get install postgresql
2. 初次安装后,默认生成
Linux系统用户:postgres
数据库postgres和的数据库用户postgres
3. 新建Linux新用户
sudo adduser pythonuser
4.1 切换到Linux的postgres用户
sudo su - postgres
4.2 使用psql命令登录PostgreSQL控制台(即系统用户postgres以同名数据库用户的身份,三者同名,免密登录数据库):
psql
4.3 为数据库用户postgres用户设置一个密码。
\password postgres
4.4 创建数据库用户pythonuser,并设置密码abc123
CREATE USER pythonuser WITH PASSWORD 'abc123';
4.3 修改数据库用户pythonuser的密码
\password pythonuser
4.4 创建用户数据库,这里为pipeline,并指定所有者为pythonuser:
CREATE DATABASE pipeline OWNER pythonuser;
4.5 删除用户
drop user pythonuser;
4.6 将pipeline数据库的所有权限都赋予pythonuser,否则pythonuser只能登录控制台,没有任何数据库操作权限
GRANT ALL PRIVILEGES ON DATABASE pipeline to pythonuser;
4.7 退出控制台
\q 或ctrl+D
虽然在postgres用户下的postgresql控制台里建立的数据库和数据库用户名及权限,但与postgres数据库是平行的关系。也可以在shell里用命令行建立数据库和数据库用户名。
在postgresql控制台里可以用\l查看数据库名|用户名。任何系统用户名都可以登录以某数据库名的数据库。系统用户名和数据库用户名相同,则可以简写。
4.1 创建数据库用户dbuser,并指定其为超级用户。
sudo -u postgres createuser --superuser dbuser
4.2 登录数据库控制台,设置dbuser用户的密码,完成后退出控制台。
sudo -u postgres psql
\password dbuser
\q
4.3 在shell命令行下,创建数据库exampledb,并指定所有者为dbuser。
sudo -u postgres createdb -O dbuser exampledb
5.1 本地登录数据库
psql -U pythonuser -d pipeline -h 127.0.0.1 -p 5432
5.2 若Linux系统用户和数据库用户名相同,则可以简写。这也是让两者名字相同的原因。
psql pipeline
5.3 PostgreSQL内部还存在与当前系统用户同名的数据库,则连数据库名都可以省略。
如系统用户testdb,数据库名testdb,数据库用户名testdb
psql
6. 恢复外部数据:
psql exampledb < exampledb.sql
7. 安装完成后,默认只能本地才能连接数据库,其他机子访问不了,需要进行配置。
7.1 修改监听地址
sudo vi /etc/postgresql/9.5/main/postgresql.conf
在 #listen_addresses = 'localhost' 注释后添加
listen_addresses = '*'
7.2 修改可访问用户的IP段
sudo vi /etc/postgresql/9.5/main/pg_hba.conf
在文件末尾添加:
# Allow all the IP address to connect
host all all 0.0.0.0 0.0.0.0 md5
7.3 重启数据库
sudo /etc/init.d/postgresql restart
7.4 此时即可远程登录数据库
psql -U pythonuser -d pipeline -h 10.8.34.16 -p 5432
8. 控制台命令
\password:设置密码
\q:退出
\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
--------------------------------------------------------
参考链接
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
http://www.cnblogs.com/z-sm/p/5644165.html