`

Postgresql 和 rails

阅读更多
update(05/13/2013)

ubuntu only
ALTER USER postgres with encrypted password 'your_password';


#/etc/postgresql/9.1/main/postgresql.conf
#localhost


Locate the line #listen_addresses = 'localhost' and change it to:

listen_addresses = 'localhost'


sudo -u postgres psql template1



\du list user
这里注意ubuntu下posgresql的gem pg依赖的包是
sudo apt-get install postgresql
sudo apt-get install libpq-dev


Locate the line #listen_addresses = 'localhost' and change it to:

listen_addresses = 'localhost'


sudo -u postgres psql template1


ALTER USER postgres with encrypted password 'your_password';



sudo /etc/init.d/postgresql-8.4 restart



安装

各个平台都有丰富的安装手册,详细可以在google里面搜索。这里是debian上安装 方式,ubuntu类似:

aptitude install postgresql  # 这个是数据库
aptitude install pgadmin3   # 这个是GUI界面的管理工具
这里debian机器(172.16.70.175)是我笔记本,我是需要一个pgadmin3,然后在实 验机器(fedora系统,172.16.70.254)上安装了postgresql。

# rpm -qa|grep postgresql
postgresql-libs-8.3.7-1.fc10.i386
postgresql-8.3.7-1.fc10.i386
postgresql-server-8.3.7-1.fc10.i386
初始化配置

postgresql的用户和系统用户是分开的,我们需要初始化数据库,设置数据库的用 户,配置postgresql的访问权限。

设置密码

如果是在debian/ubuntu,或者fedora这些系统上使用deb或rpm包安装的,都会建立 好postgres用户。我们需要以这个用户权限运行psql命令设置postgres用户密码:

# su postgres -c psql template1
欢迎来到 psql 8.3.7,这是 PostgreSQL 互动式文字终端机。

键入: \copyright 显示发行条款
       \h 显示 SQL 命令的说明
       \? 显示 pgsql 命令的说明
       \g 或者以分号(;)结尾以执行查询
       \q 退出

postgres=# ALTER USER postgres with password 'abc123';
ALTER ROLE
postgres=# \q
上面abc123就是我们设置的密码。

创建数据库

su postgres -c createdb mydb
配置远程链接

1. 首先看看防火墙是否开启,如果开启需要允许5432端口的联通。如不知怎样配置 防火墙,就关闭它。

2. 配置postgresql.conf文件,这个文件在数据库pgsql目录下的data目录里。我在 fedora上现在的地方是/var/lib/pgsql/data/postgresql.conf。

listen_addresses = '*'   #把这句的注释去掉,'*' 号表示监听所有网络地址的链接
3. 配置pg_hba.conf文件,通常和postgresql.conf文件在同一个目录下:

host    all         all         172.16.70.175   255.255.252.0   md5
# 我在最后加上了这一句
# 我的笔记本IP是175, netmask是255.255.252.0
# 这里和我同一网段的机器都以链接
4. 重启postgresql服务

# /etc/init.d/postgresql restart
停止 postgresql 服务:                                     [确定]
启动 postgresql 服务:                                     [确定]
用户管理

创建用户 createuser

createuser 是 SQL 命令 CREATE USER的封装。
命令:createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主机名] [-p port] 用户名
参数说明:
[-a]:允许创建其他用户,相当于创建一个超级用户;
[-A]:不允许此用户创建其他用户;
[-d]:允许此用户创建数据库;
[-D]:不允许此用户创建数据库;
[-e]:将执行过程显示到Shell上;
[-P]:创建用户时,同时设置密码;
[-h 主机名]:为某个主机上的Postgres创建用户;
[-p port]:与-h参数一同使用,指定主机的端口。
1. 直接运行createruser命令

# createuser
Enter name of role to add: jianlee
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
createuser: 无法联接到数据库 postgres: 致命错误:  用户 "root" Ident 认证失败
上面命令运行出错的原因是root用户没有权限访问数据库,我们使用前面设置密 码的postgres用户运行命令:

# su postgres
bash-3.2$ createuser
Enter name of role to add: jianlee
Shall the new role be a superuser? (y/n) n  # 如果选择y,那么jianlee就是超级用户
Shall the new role be allowed to create databases? (y/n) y #如果上面没有选择y,这里才出现
Shall the new role be allowed to create more new roles? (y/n) y #同上
2. 为指定的主机和端口创建用户(就是远程创建用户)

# su postgres
postgres@jianlee:/root$ createuser -h 172.16.70.254 -p 5432 -D -A -e turbolinux
Shall the new role be allowed to create more new roles? (y/n) y
口令:     # 输入用户postgres的口令
CREATE ROLE turbolinux NOSUPERUSER NOCREATEDB CREATEROLE INHERIT LOGIN;
这个例子我在debian机器上先su到postgres用户下执行createuser命令,-h和-p 指定远程主机的ip和端口,turbolinux是我想创建的用户名。必须远程 (172.16.70.254)机器上的postgresql服务器启动并且postgres用户可以从 debian(172.16.70.175)访问情况下,才能执行正确。

3. 创建超级用户

$ createuser -P -d -a -e turbo_rd
Enter password for new role:
再输入一遍:
CREATE ROLE turbo_rd PASSWORD 'md5259766bbac3b83cd9195cc0bea6ecec7' \
SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
参数看本节开始的createuser参数说明。

删除用户 dropuser

$ dropuser --help
dropuser removes a PostgreSQL role.

使用方法:
  dropuser [OPTION]... [ROLENAME]

选项:
  -e, --echo                显示发送到服务端的命令
  -i, --interactive         删除任何东西之前给予提示
  -h, --host=HOSTNAM        数据库服务器所在机器的主机名或套接字目录
  -p, --port=PORT           数据库服务器端口号
  -U, --username=USERNAME   联接用户 (不是要删除的用户名)
  -W, --password            force password prompt
  --help                    显示此帮助信息, 然后退出
  --version                 输出版本信息, 然后退出

臭虫报告至 <pgsql-bugs@postgresql.org>.
1. 本地删除

$ dropuser -i -e turbo_rd
Role "turbo_rd" will be permanently removed.
你确定吗? (y/n) y
DROP ROLE turbo_rd;
2. 远程删除

$ dropuser -p 5432 -h 172.16.70.254 -i -e turbolinux
Role "turbolinux" will be permanently removed.
你确定吗? (y/n) y
口令:
DROP ROLE turbolinux;
再次提醒:本次命令的运行者必须是能登录254机器上数据库的用户。'口令'也是 该用户的数据库登录口令。

数据库简单管理

创建数据库 createdb

createdb 中文
注意,运行这个命令的用户需要是postgresql服务器用户,有建库权限。

删除数据库 dropdb

访问数据库

1. 使用psql命令行

$ psql 中文
欢迎来到 psql 8.3.7,这是 PostgreSQL 互动式文字终端机。

键入: \copyright 显示发行条款
       \h 显示 SQL 命令的说明
       \? 显示 pgsql 命令的说明
       \g 或者以分号(;)结尾以执行查询
       \q 退出

中文=#
2. 使用pgadmin3图形界面管理工具

表操作

创建完数据库之后,我们就可以在数据库里面创建表了。我用的postgresql版本是 8.3(debian lenny),表名、表中的所有字段的名字和注释可以是UTF-8字符。但是 用英文名字可以TAB键补全的地方多,不过这里我还是用中文表示。例子是参考 postgresql的wiki上的。

创建新表

首先启动psql命令行程序,然后创建新表:

root@jianlee:~# psql -U postgres -h localhost
欢迎来到 psql 8.3.6,这是 PostgreSQL 互动式文字终端机。
...
postgres=# CREATE TABLE 天气(
城市 varchar(80),  -- 这是城市名字
最低气温 int, -- 一天当中最低气温
最高气温 int, -- 一天当中最高气温
降水量  real, -- 当天的降水量
日期    date -- 日期
);
CREATE TABLE   <== 这里显示创建成功
postgres=#
注意 : 最后一行date字符后面没有 ',' 号!如果加上逗号会出现语法错误。

除了常用的 \q \? 等命令,psql里面的一条命令是以 ';' 结束的。在SQL里面可 以随意使用空白(空格、tab、换行符)。 — 是注释的开始,到换行符结束。 SQL对于大小写不敏感,之用在双引号字符串中才区分大小写。

常见错误

pgadmin3-"服务器工具未安装"

参考:http://techxplorer.com/2008/01/16/installing-postgresql-server-instrumentation-under-ubuntu/

1. 安装 postgresql-contrib 包

2. 运行命令:

psql -U postgres -d postgres -h localhost < \
/usr/share/postgresql/8.3/contrib/adminpack.sql
分享到:
评论

相关推荐

    Spotlofi:Lofi音乐流应用程序。 使用PostgresQL,Rails,React和Redux构建

    Spotlofi |Spotlofi是一款Lofi音乐流媒体应用程序,受到Spotify的极大启发。 使用PostgresQL,Rails,React和Redux构建。技术领域JavaScript ReactRedux 滑轨PostgresQL AWS特征用户认证播放清单CRUD喜欢搜索播放器

    danbooru:用Rails 6编写的可标记图像板

    为了获得最佳性能,PostgreSQL和Rails至少需要256MB的RAM。 随着数据库变大,内存需求将增长。 在生产中,Danbooru使用PostgreSQL 9.4,但是任何9.x版本都可以使用。 尽可能使用操作系统的程序包管理系统。 这将...

    中文版rails教程

    2. **数据库迁移(Database Migrations)**:Rails使用ActiveRecord和SQLite、MySQL或PostgreSQL等数据库系统交互。开发者通过编写迁移文件来定义和修改数据库结构。 3. **路由(Routing)**:Rails的路由系统根据...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    4. **数据库配置**:Rails默认使用SQLite数据库,但你可以根据需求更改到MySQL或PostgreSQL等。修改`config/database.yml`文件来配置你的数据库连接。 5. **模型-视图-控制器**:Rails的MVC架构使得数据模型、用户...

    rails-1.0.0

    Rails 1.0.0支持多种数据库,如MySQL、PostgreSQL和SQLite。 2. **ActiveRecord模型**:模型层包含了业务逻辑和数据验证。开发者可以定义属性、关联(如一对一、一对多、多对多)、以及验证规则,确保数据的完整性...

    Rails入门教程一(翻译).pdf

    在数据库方面,Rails默认使用SQLite,但也会介绍如何切换到其他数据库系统,如MySQL或PostgreSQL。教程会涵盖ActiveRecord,它是Rails中的ORM(对象关系映射)工具,使得开发者能以面向对象的方式操作数据库。 路由...

    danbooru

    为了获得最佳性能,PostgreSQL和Rails至少需要256MB的RAM。随着数据库变大,内存需求将增长。在生产中,Danbooru使用PostgreSQL 9.4,但是任何9.x版本都可以使用。尽可能使用操作系统的程序包管理系统。这将简化安装...

    Rails.Angular.Postgres.and.Bootstrap.2nd.Edition

    Embrace the full stack of web development, from styling with Bootstrap, building an interactive user interface with Angular 2, to storing data quickly and reliably in PostgreSQL. With this fully ...

    Ruby On Rails教程

    Rails支持多种数据库,如MySQL、PostgreSQL等。 - **持续更新与部署:** 保持Rails版本的最新是必要的,可以通过RubyGems进行升级。对于部署到互联网服务提供商(ISP)的情况,需要考虑服务器环境的兼容性和安全性问题...

    linux-在Ubuntu服务器上安装Rails生产环境的脚本

    在Ubuntu服务器上搭建Rails生产环境是一项关键的任务,它涉及到多个步骤和组件的配置。Rails是Ruby的一个框架,用于构建Web应用程序。在这个过程中,我们将主要关注以下几个核心知识点: 1. **Ruby 安装**:首先,...

    rails 离线安装包

    7. **数据库配置**:Rails默认使用SQLite数据库,但也可以通过`config/database.yml`文件配置使用MySQL、PostgreSQL等其他数据库。 8. **路由配置**:Rails的路由系统是其强大的特点之一,它通过`config/routes.rb`...

    rails 的安装

    - 确保你的系统满足Rails和Ruby的最低要求,以及任何特定Gem的系统依赖。 通过以上步骤,你应该能够成功地在你的机器上安装和运行Rails。不过,Ruby on Rails是一个庞大的生态系统,有很多深入的主题值得探索,如...

    教学级Ruby On Rails 手动安装.pdf

    尽管Ruby on Rails提供了丰富的功能和高效的工作流,但初次安装配置可能会让新手感到困惑。通过上述步骤,您可以手动完成Ruby on Rails的环境搭建,从而开启Rails开发之旅。记住,良好的开发环境是项目成功的基石,...

    ruby on rails社区网站开发源码

    3. **数据库配置**:Rails默认使用SQLite数据库,但也可以配置为使用MySQL、PostgreSQL等其他数据库。在`config/database.yml`文件中进行配置。 4. **模型(Model)**:模型代表数据和业务逻辑,一般与数据库表对应...

    windows下配置netbeans开发rails

    在Windows环境下,使用NetBeans进行Rails开发需要一系列的配置步骤,因为Rails是一个基于Ruby的Web框架,而NetBeans是一款强大的...不断学习和实践,掌握Rails和NetBeans的使用技巧,将有助于提高开发效率和代码质量。

    ruby on rails 学习资料

    "ruby on rails环境搭建.doc"会详细指导你如何在本地计算机上设置Rails开发环境,这通常包括安装Ruby、Rails、数据库服务器(如MySQL或PostgreSQL)、Web服务器(如Webrick或Puma)、以及必要的开发工具如Git和 ...

    ruby on rails对mongodb的操作

    在Ruby on Rails框架中,开发人员经常选择使用关系型数据库如SQLite、PostgreSQL或MySQL来存储数据。然而,随着NoSQL数据库的兴起,MongoDB因其灵活性和非结构化数据处理能力,也成为了许多Web应用程序的选择。本文...

    rails配置sqlserver2000

    在Ruby on Rails框架中,与SQLServer 2000集成可能会比与其他常见的数据库系统(如MySQL或PostgreSQL)稍复杂一些,因为SQLServer 2000的兼容性问题和缺少官方支持。然而,通过一些第三方库和适当的配置,我们仍然...

    windows下Ruby On Rails的构建

    接下来,Ruby的包管理器Gem是安装Rails和其他依赖库的关键工具。如果你安装的Ruby版本不是最新,可以通过在cmd中输入`gem update --system`来更新Gem到最新版本。按照提示操作,一路按“y”确认升级。更新完成后,...

Global site tag (gtag.js) - Google Analytics