十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我们使用Postgresql数据库的时候,默认都是用postgres用户进行数据操作。但是有时为了数据安全,我们会另外建一些账号给相关的工作人员使用。那么Postgresql数据库中如何新建登录用户呢?下面我给大家分享一下。
创新互联专注于中小企业网站建设、策划制作、运行维护,主要提供一站式的企业网站建设服务。建站类型:公司网站建设、品牌网站建设、成都外贸网站制作独立站等。创新互联不是单一的建网站,而是结合企业的建站目标去规划网站怎么建,如何利于运营,寻求适合的建站方案。其次,网站后台操作的便捷性也是网站制作过程中的重点,创新互联的网站后台简单便捷,真正实现了零基础操作。
工具/材料
pgAdmin4
01
首先打开Postgresql的管理工具pgAdmin4,接着双击服务器名称,如下图所示
02
在弹出的Connect to Server界面中输入postgres用户的密码,然后点击OK按钮,如下图所示
03
进入到数据库以后右键单击"登录/组角色"选项,选择Create下面的Login/Group Role选项,如下图所示
04
接下来会弹出创建登录用户的界面,我们先给用户起一个名字,尽量是英文,如下图所示
05
然后切换到Definition页卡,给登录用户设置一个登录密码,如下图所示,注意Connection limit要设置为-1
06
接着切换到Privileges界面,这里需要给登录用户设置一下操作权限,大家可以根据自己的需要设置即可,如下图所示
07
接下来切换到Membership页卡,给登录用户设置一个角色,这里我直接把管理员的角色给它了,如下图所示
08
上述设置完毕以后回到数据库主界面,我们就可以看到"登录/组角色"下面就已经有我们新建的登录用户了,如下图所示
09
最后我们断开当前的连接,用新建的用户进行登录,如果登录正常的话则代表一切设置成功,如下图所示
F:\PostgreSQL\9.2\binpsql.exe
-h
localhost
-U
postgres
-d
Test
-p
5432psql
(9.2.4)输入
"help"
来获取帮助信息.Test=#Test=#
help;您正在使用psql,
这是一种用于访问PostgreSQL的命令行界面键入:
\copyright
显示发行条款
\h
显示
SQL
命令的说明
\?
显示
pgsql
命令的说明
\g
或者以分号(;)结尾以执行查询
\q
退出注:
数据库名称区分大小写的。使用某些有密码的用户的情况下,
会提示输入密码.F:\PostgreSQL\9.2\binpsql.exe
-h
localhost
-U
test
-d
Test
-p
5432用户
test
的口令:psql
(9.2.4)输入
"help"
来获取帮助信息.Test=#
我们在使用Postgresql的时候,首先需要开启Postgresql服务。那么在Windows系统中有哪些方法开启Postgresql服务呢?下面我给大家分享一下。
工具/材料
任务管理器,服务面板,CMD命令行
服务面板开启
01
首先按Win+R组合键打开运行窗口,在输入框中输入services.msc命令,如下图所示
02
在出现的服务界面中我们找到postgresql的记录行,如下图所示,右键单击选择启动
03
当服务的状态显示为正在运行的时候则代表postgresql服务已经打开了,如下图所示
任务管理器开启
01
按住键盘上的Ctrl+Shift+ESC组合键,注意是同时按下,不是一个个按,如下图所示
02
在弹出的任务管理器窗口中切换到服务面板,找到postgresql服务,右键单击选择开始选项,如下图所示
命令行开启
01
找到所有程序下面的Windows系统,然后点击命令提示符,如下图所示
02
另外也可以直接打开运行界面输入CMD命令打开命令提示符界面,如下图所示
03
在命令提示符中通过net start命令来开启postgresql服务,如下图所示,注意服务名一定要写正确
到postgresql安装目录的bin文件夹下手动启动pg_ctl—— pg_ctl start -w -D "../data",未果,但是提示说某个文件没有权限创建。 解决办法是将整个postgreSQL安装目录附一个Everyone的权限。
启动,还是不成功,于是查看data/pg_log目录下的日志信息,发现无法创建inherite socket。 解决办法是运行 netsh winsock reset,然后重启系统。
1. 启动数据库服务器(posgres用户):
[postgres@localhost bin]$ postgres -D /opt/postgresql/data/ /opt/postgresql/log/pg_server.log 21
[1] 4508
当然如果设置了环境变量
PGDATA=/opt/postgresql/data
export PGDATA
后,可使用pg_ctl工具进行启动:
[postgres@localhost log]$ pg_ctl start -l /opt/postgresql/log/pg_server.log
pg_ctl: another server might be running; trying to start server anyway
pg_ctl: could not start server
Examine the log output.
[postgres@localhost log]$
因为之前已经启动,所以打印“another server might be running”。此时,查看日志,有如下信息:
[postgres@localhost log]$ cat pg_server.log
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 4491) running in data directory "/opt/postgresql/data"?
[postgres@localhost log]$
当然,最简的.启动方式是:
[postgres@localhost ~]$ pg_ctl start
server starting
[postgres@localhost ~]$ LOG: database system was shut down at 2011-07-09 13:58:00 CST
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
如果要在操作系统启动时就启动PG,可以在/etc/rc.d/rc.local 文件中加以下语句:
/opt/postgresql/bin/pg_ctl start -l /opt/postgresql/log/pg_server.log -D /opt/postgresql/data
2.关闭服务器
最简单方法:
[postgres@localhost ~]$ pg_ctl stop
waiting for server to shut down.... done
server stopped
与Oracle相同,在关闭时也可采用不同的模式,简介如下:
SIGTERM
不再允许新的连接,但是允许所有活跃的会话正常完成他们的工作,只有在所有会话都结束任务后才关闭。这是智能关闭。
SIGINT
不再允许新的连接,向所有活跃服务器发送 SIGTERM(让它们立刻退出),然后等待所有子进程退出并关闭数据库。这是快速关闭。
SIGQUIT
令 postgres 向所有子进程发送 SIGQUIT 并且立即退出(所有子进程也会立即退出),而不会妥善地关闭数据库系统。这是立即关闭。这样做会导致下次启动时的恢复(通过重放 WAL 日志)。我们推荐只在紧急的时候使用这个方法。
SIGKILL
此选项尽量不要使用,这样会阻止服务器清理共享内存和信号灯资源,那样的话你只能在启动服务器之前自己手工做这件事。另外,SIGKILL 直接把 postgres 杀掉,而不会等它把信号中继给它的子进程,因此我们还需要手工杀掉每个独立子进程。
使用方法举例:
[postgres@localhost ~]$ pg_ctl stop -o SIGTERM
LOG: received smart shutdown request
LOG: autovacuum launcher shutting down
waiting for server to shut down....LOG: shutting down
LOG: database system is shut down
done
server stopped
[postgres@localhost ~]$
最快速关闭方法:kill postgres 进程
[postgres@localhost ~]$ kill -INT `head -1 /opt/postgresql/data/postmaster.pid`
[postgres@localhost ~]$ LOG: received fast shutdown request
LOG: aborting any active transactions
LOG: autovacuum launcher shutting down
LOG: shutting down
LOG: database system is shut down
附:postgre启动后的进程,如下:
[postgres@localhost ~]$ ps -ef|grep post
root 4609 4543 0 13:57 pts/2 00:00:00 su - postgres
postgres 4610 4609 0 13:57 pts/2 00:00:00 -bash
postgres 4724 1 0 14:08 pts/2 00:00:00 /opt/postgresql/bin/postgres
postgres 4726 4724 0 14:08 ? 00:00:00 postgres: writer process
postgres 4727 4724 0 14:08 ? 00:00:00 postgres: wal writer process
postgres 4728 4724 0 14:08 ? 00:00:00 postgres: autovacuum launcher process
postgres 4729 4724 0 14:08 ? 00:00:00 postgres: stats collector process
postgres 4752 4610 0 14:11 pts/2 00:00:00 ps -ef
postgres 4753 4610 0 14:11 pts/2 00:00:00 grep post
[postgres@localhost ~]$
仔细分析,无非几个原因:
1、log目录的权限问题,比如log文件指定的目录postgres用户无权写入,因此没有产生任何log文件。检查了/var/lib/postgresql/11/main的目录,没有发现问题。
2、配置文件的权限问题,检查了/etc/postgresql/11/main目录,也没有发现任何问题,postgres用户是有权限读取配置文件的。
3、配置文件有错误导致无法正常启动postgresql。排除了上面的两个原因,这个应该是最大的原因了。但是,错误在哪里呢?没有给出提示啊!
尝试了service postgresql start, pg_ctrcluster, pg_ctl均无法给出任何提示,后来才想明白,这几个都是对postmaster的脚本封装啊,也许这些封装忽略了什么重要的信息!应该直接运行postmaster才能得到直接的出错提示的!果然,执行/usr/lib/postgresql/11/bin/下的postmaster给出了提示,执行语句:
看到这里立刻明白了:我将postgresql.conf中的lc_messages改为了 en_US.UTF-8,可是没有产生en_US.UTF-8的locale文件啊!于是修改/etc/locales.gen文件添加en_US.UTF-8,执行locales.gen,再次启动postgresql,成功!