1 CenterOS7设置PG允许外部访问
1.1 修改对应配置文件
- 修改/var/lib/pgsql/14/data/pg_hba.conf文件,在文件最后追加
host all all 0.0.0.0/0 md5
- 修改/var/lib/pgsql/14/data/postgresql.conf文件
listen_addresses = '*' # what IP address(es) to listen on
1.2 重启PG服务
systemctl restart postgresql-14
2 修改默认postgre用户名对应的密码
- 在shell输入命令,进入切换至postgres用户命令行
su postgres
- 在PG命令行下bash-4.2$ 输入如下登入默认数据库命令行
psql postgres
注:以上两条命令可以简化如下命令:
sudo -u postgres psql postgres
- 在PG命令交互窗口postgres=#输入修改对应用户名postgre密码命令
\password postgres
注意修改两遍密码信息
3 用户、角色、权限
3.1 角色
PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。
操作角色的语句:
create role db_role1; /--创建角色/
drop role db_role1; /--删除角色/
select rolename from pg_roles; /--查看所有角色/
/du --在命令格式下查看所有角色的命令
3.2 角色权限
一个数据库角色可以有很多权限,这些权限定义了角色和拥有角色的用户可以做的事情。
create role db_role1 LOGIN; --创建具有登录权限的角色db_role1
create role db_role2 SUPERUSER; --创建具有超级用户权限的角色
create role db_role3 CREATEDB; --创建具有创建数据库权限的角色
create role db_role4 CREATEROLE --创建具有创建角色权限的角色
alter role db_role1 nologin nocreatedb; --修改角色取消登录和创建数据库权限
3.3 用户
其实用户和角色都是角色,只是用户是具有登录权限的角色。
create user db_user1 password '123'; --创建用户
create role db_user1 password '123' LOGIN; --同上一句等价
drop user db_user1; --删除用户
alter user db_user1 password '123456'; --修改密码
alter user db_user1 createdb createrole; --对用户授权
3.4 角色赋予权限
使用GRANT 和REVOKE命令赋予用户角色,来控制权限。
create user db_user1; --创建用户1
create user db_user2; --创建用户2
create role db_role1 createdb createrole; --创建角色1
grant db_role1 to db_user1,db_user2; --给用户1,2赋予角色1,两个用户就拥有了创建数据库和创建角色的权限
revoke db_role1 from db_user1; --从用户1移除角色1,用户不在拥有角色1的权限
4 PG提示客户端太多了
- 运行这个SQL来查看允许的postgresql max连接:
show max_connections;
- 看看究竟是谁/什么/什么时候/在哪里举行打开你的连接
SELECT * FROM pg_stat_activity;
- postgresql.conf中的max_connections设置数据库服务器的最大并发连接数。
- 首先find你的postgresql.conf文件
- 如果你不知道它在哪里,用sql: SHOW config_file;查询数据库SHOW config_file;
- 我在: /var/lib/pgsql/data/postgresql.conf
- 以root身份login并编辑该文件。
searchstring:“max_connections”。
你会看到一行说max_connections=100 。
设置这个数字更大,检查你的postgresql版本的限制。 - 重新启动postgresql数据库以使更改生效。
- 查看最大的max_connections
select min_val, max_val from pg_settings where name='max_connections';
网友评论