【环境】
CentOS版本:
输入命令:
cat /etc/redhat-release
输出:
CentOS Linux release 7.5.1804 (Core)
输入命令:
uname -a
输出:
Linux vultr.guest 4.17.13-1.el7.elrepo.x86_64 #1 SMP Mon Aug 6 14:16:00 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
【安装(yum)】
yum安装:
yum install postgresql-server
默认安装:postgresql-server-9.2.23
初始化数据库:
postgresql-setup initdb
输出:
Initializing database ... OK
设置自动启动:
systemctl enable postgresql.service /bin/systemctl start postgresql.service
设置认证模式:
参考:https://www.postgresql.org/message-id/[email protected]
编辑 /var/lib/pgsql/data/pg_hba.conf ,
# IPv4 local connections: host all all 127.0.0.1/32 password
使用postgres用户在PostgreSQL控制台生成其他用户和新数据库:
新建一个Linux新用户 dbuser :
sudo adduser dbuser
修改默认用户postgres的密码:
切换到postgres用户:
sudo su - postgres
返回:
-bash-4.2$
使用psql命令登录PostgreSQL控制台,输入命令:
psql
返回:
psql (9.2.23) Type "help" for help. postgres=#
这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为”postgres=#”,表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。
在数据库控制台输入命令:
\password postgres
输入密码,以及重复输入密码: 4zAGbSxBOXV9Rnxy
创建数据库用户dbuser(刚才创建的是Linux系统用户),并设置密码:
CREATE USER dbuser WITH PASSWORD 'M4MLnFKYsNhpwfmv';
返回:CREATE ROLE
创建用户数据库,这里为exampledb,并指定所有者为dbuser:
CREATE DATABASE exampledb OWNER dbuser;
返回:CREATE DATABASE
将exampledb数据库的所有权限都赋予dbuser,否则dbuser只能登录控制台,没有任何数据库操作权限:
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
返回:GRANT
重新启动postgresql的服务:
Ctrl+D 2次,退出数据库控制台。
重启postgresql:
/bin/systemctl restart postgresql.service
用户 postgres 登录测试:
psql -h 127.0.0.1 -p 5432 -U postgres
返回:
Password for user postgres:
输入密码:4zAGbSxBOXV9Rnxy
返回:
psql (9.2.23) Type "help" for help. postgres=#
用户 dbuser 登录数据库 exampledb :
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
返回:
Password for user dbuser:
输入密码:M4MLnFKYsNhpwfmv
返回:
psql (9.2.23) Type "help" for help. exampledb=>