新手问题 [已解决] 如何创建 PostgreSQL 的数据库

chairy11 · 2014年05月08日 · 最后由 llvm 回复于 2014年05月10日 · 7742 次阅读

问题

把 development 和 test 的数据库都从 SQLite3 换回 PostgreSQL, gem 安装好之后

rake db:create

一直提示出错:

Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"r_development", "pool"=>5}
PG::InsufficientPrivilege: ERROR:  permission denied to create database

哎呀呀,google 不到答案,有人可以帮我一下吗?

解决方案

sudo su - postgres   
dropuser yby
createuser -s yby   

把自己变成 superuser,但当时忘了设置密码,会提示“FATAL: password authentication failed for user "yby"”

sudo -u postgres psql
postgres=# \password $USER  

这句用来修改密码,然后 OK。

如果是刚装完 PG,其实只需要:

sudo su - postgres   
createuser -P -s yby

因为刚装完 PostgreSQL,默认的 superuser 是 postgres,用这个用户名登录,然后创建一个带密码的跟本机名同名的 superuser,一切就会非常简单。 “createuser -P -s -e”中的 -P 是用来设置密码, -s 用来设置 superuser,yby 是你的用户名。

另,谢谢各位热心帮助!

自己解决

你的 PostgreSQL 指定的用户没有创建数据库的权限

#3 楼 @blacktulip 之前它一直提示我用户 yby 不存在,我已经

sudo su - postgres
createuser yby

貌似它就不再提示了,那说明用户存在了啊……

#2 楼 @chairy11 信不信,你要是能坚持三个月不问问题,就可以明显感觉到水平有进步

#5 楼 @bhuztez 那我这三个月死去活来怎么办?

#6 楼 @chairy11 那就去干别的....

create role yby with createdb login password 'password'

找个工程师男盆友吧 😄

#10 楼 @rociiu 这事儿由不得我选择啊!我也一直想找个技术高手男朋友啊!结果我喜欢上一个学国际贸易的……

#8 楼 @messiahxu 我没有设置过 password 哦!我先试试哈~

先从本机部署 gitlab 试试吧……

@chairy11 'PG::InsufficientPrivilege: ERROR: permission denied to create database' -> google.com 结果很多

google.com stackoverflow.com 基本上可以解决大部分问题

不是不问问题 而是学会用 google

#9 楼 @Juanito 额,我跟着做,貌似不行……

#15 楼 @karmue 通常先 google 后提问……

#14 楼 @rociiu google.com stackoverflow.com 都看了,前面有个用户不存在的解决了,后面的 permission denied to create database 跟着几个帖做都没解决……

#13 楼 @aptx4869 才不要呢……gitlab 是不是相当于 github?我用 git 的啊!

#8 楼 @messiahxu 话说,你这句是在什么语境下啊?

yby@yby:~/YBY/rc$ sudo su - postgres
postgres@yby:~$ create role yby with createdb login password 'xxxxxx'
No command 'create' found, did you mean:
 Command 'pcreate' from package 'python-pyramid' (universe)
 Command 'pcreate' from package 'pbuilder-scripts' (universe)
create: command not found

我用 pgAdmin 好像是创建了个用户来着, 反正现在左边如图:

楼主,如果要想彻底整明白的话

http://www.postgresql.org/docs/manuals/

挑你对应的版本,把第一章 Tutorial 和第三章 Server Administration 仔细看一遍。

其实大家的意思就是 RTFM ... 没什么捷径可走。

#21 楼 @blacktulip 算了,明日再战,今晚又崩溃了……试了好几个方法都不行……

把你当前登录的用户,作为 pg 的操作用户,把这个用户给予权限。 具体参照这里,非常简洁实用的文档,来自 openerp,https://doc.openerp.com/install/linux/postgres/ 我就是按照它配置的。 更全的在 http://www.postgresql.org/files/documentation/pdf/9.2/postgresql-9.2-US.pdf

注意下, createuser openerp 改成你当前的用户,常用的命令是

psql dbname createdb xxx dropdb xxx psql xxx < xxx.sql pg_dump xxx > xxx.sql

这些都没问题了,再用 rails

还得夸一下 https://doc.openerp.com/install/linux/postgres/ 这篇文章,当时我也卡在 pg 上,但是这篇文章顺利的解决问题。OpenERP 的很多技术文章真感觉高大上。

实在解决不了改 pg_hba.conf…

把你 database.yml 发出来看看

http://wiki.archlinux.org/index.php/PostgreSQL

Arch 多方便……Ubuntu 这大坑……

#6 楼 @chairy11 鉴于 RubyChina 上就你提问最多,三个月不准问问题也是应该的

#4 楼 @chairy11 需要加上创建数据库的权限

createuser -d username

参数的意义可以看官网文档或 createuser --help

#27 楼 @Kabie 不知所云

https://help.ubuntu.com/community/PostgreSQL

http://lmgtfy.com/?q=postgresql+permission+denied+to+create+database 为什么会搜不到内容?我看了前几个页面都是问题直接相关的

需要为你当前用户赋予创建数据库的权限

alter role {your_username} createdb

如果你用的是 Mac,通过PostgresApp安装的话,你连用户名密码权限啥都不用指定。

#27 楼 @Kabie 要说坑哪有比 arch 大的坑

#32 楼 @blacktulip ...还好啦…………前两天有人升 14.04 就升坏了……想修都不知道怎么下手……

……Arch 玩坏的几次还都知道怎么抢救……

#33 楼 @Kabie 这倒是,ubuntu 的 大版本升级是不能用的

#28 楼 @bhuztez 逃避了一天,终于出来解决问题…… 我从小到大就是那种在学习上遇到问题从不问人,只会自己默默找答案的那种,找不到答案就忽略问题。 所以前两年我都是一有点问题卡住了,就又觉得自己不行,又回去看书……一看,过几天,连问题都忘了……

好不容易养成了问题马上求解的习惯,你还不让人家发问…… 话说你不是说要教我写代码来着?现在问题都不让我问,哼!

#33 楼 @Kabie #34 楼 @blacktulip 我现在用的就是 14.04, 什么坑什么坑?我要提防什么不?

#30 楼 @Rei 唉……我弄了句

dropuser yby
createuser -s yby    

变身 superuser 了,却一直提示我密码不对

FATAL:  password authentication failed for user "yby"
FATAL:  password authentication failed for user "yby"

折腾来折腾去设置来设置去没弄成功……

想再 dropuser 一次,重新设置个带密码版本的吧,竟然还不让

yby@yby:~/YBY/r$ sudo su - postgres
postgres@yby:~$ dropuser yby
dropuser: removal of role "yby" failed: ERROR:  role "yby" cannot be dropped because some objects depend on it
DETAIL:  owner of function pg_logfile_rotate()
owner of function pg_file_length(text)
owner of function pg_file_read(text,bigint,bigint)
owner of function pg_logdir_ls()
owner of function pg_file_unlink(text)
owner of function pg_file_rename(text,text)
owner of function pg_file_rename(text,text,text)
owner of function pg_file_write(text,text,boolean)
owner of extension adminpack

#37 楼 @chairy11

A database superuser bypasses all permission checks, except the right to log in.

http://www.postgresql.org/docs/9.3/interactive/role-attributes.html

嘿嘿

#26 楼 @Yujing_Z

development:
  adapter: postgresql
  encoding: unicode
  database: r_development
  pool: 5
  username: yby
  password: xxxx
  host: 127.0.0.1


test:
  adapter: postgresql
  encoding: unicode
  database: r_test
  pool: 5
  username: yby
  password: xxxx
  host: 127.0.0.1

#38 楼 @Rei except the right to log in? 我看这 pgAdmin 显示 can login 啊……虽然我不知道 login 意味着啥……

#40 楼 @chairy11

PostgreSQL 好久不用了。

看提醒信息应该是没有创建数据库的权限。

你还不如自己手动创建绕过,然后跑 rake db:migrate -t 试试,看能不能创建对应的表

#41 楼 @zfjoy520 恩,你回帖的时候我正好更新,已经解决了,谢谢:)

#42 楼 @chairy11 客气,没帮上忙。久了生了。对 PG 不熟。MYSQL 倒还可以帮上点忙。

这也能翻页?

#45 楼 @blacktulip 谢谢:)最近特忙,所以有时就急于解决问题了,都没时间好好去细看该看的手册,本着一种不管怎样迅速解决就行了的态度。

48 楼 已删除

#48 楼 @llvm yum 太烂。当然比 desktop 的话所有 linux 都一样烂

50 楼 已删除

#50 楼 @llvm 又不是打仗,五十步就是比百步强啊

52 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号