PostgreSQL
PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们。
特点:
- PostgreSQL可在所有主要操作系统(即Linux,UNIX和Windows等)上运行;
- PostgreSQL支持文本,图像,声音和视频,并包括用于C/C++,Java,Perl,Python,Ruby,Tcl和开放数据库连接(ODBC)的编程接口;
- PostgreSQL支持SQL的许多功能;
- 在PostgreSQL中,表可以设置为从“父”表继承其特征。
可以安装多个扩展以向PostgreSQL添加附加功能。
安装与设置
安装:
sudo apt-get install postgresql-10
这创建了一个名为postgres的数据库和名为postgres的数据库系统用户。同时默认创建一个linux系统用户postgres,并且没有设置密码
ulysses@ulysses:~$ sudo cat /etc/shadow
root:!:17822:
daemon:*:17737:
ulysses:$6$or/1T15bg4hDlm
postgres:$6$QkGHle
epmd:*:1783
为这个新的linux系统用户
设置密码:
root@ulysses:/home/ulysses# passwd postgres
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
将postgres添加到sudoer列表中,否则无法从postgres切换到其他用户。在root用户,下添加sudoers文件的写权限:
root@ulysses:/home/ulysses# chmod u+w /etc/sudoers
root@ulysses:/home/ulysses# vim /etc/sudoers
添加postgres用户:
# User privilege specification
root ALL=(ALL:ALL) ALL
postgres ALL=(ALL) ALL
切换到postgres用户,并使用psql命令进入数据库:
root@ulysses:/home/ulysses# su postgres
postgres@ulysses:/home/ulysses$ psql
psql (10.5 (Ubuntu 10.5-0ubuntu0.18.04))
Type "help" for help.
postgres=#
这相当于使用系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入数据库密码的。
可以修改数据库用户postgres的密码:
postgres=# ALTER USER postgres WITH PASSWORD '<***password***>';
ALTER ROLE
postgres=# \q
postgres@ulysses:/home/ulysses$
数据库管理
创建一个linux系统用户
dbuser,用这个用户来管理ubuntu上安装的数据库:
root@ulysses:/home/ulysses# adduser dbuser
Adding user `dbuser' ...
Adding new group `dbuser' (1003) ...
Adding new user `dbuser' (1001) with group `dbuser' ...
Creating home directory `/home/dbuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for dbuser
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
root@ulysses:/home/ulysses# su dbuser
dbuser@ulysses:/home/ulysses$ su ulysses
Password:
ulysses@ulysses:~$
进入postgres数据库,创建一个数据库用户
dbuser,并创建用户数据库exampledb,并指定所有者为dbuser: