$ sudo yum -y install postgresql-server依存関係により、
- postgresql-server
- postgresql-libs
- postgresql-server
の3つがインストールされることになります。現在はバージョンは、8.4.13-1.e16_3です。
これでインストールはできているのですが、データベースサーバーが起動していないので、まだ利用することはできません。最初の起動のため、次の2つコマンドを打ちます。
$ sudo service postgresql initdbここで、initdbをせずにpostgresqlを起動しようとすると、次のようなエラーになります。
$ sudo service postgresql start
/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
[失敗]
CentOSを再起動したときにpostgresqlも自動的に起動されるように設定しておきます。
$ sudo chkconfig postgresql on
これでデータベースサーバーの起動はOKです。後は、ユーザーの設定を行います。
PostgreSQLのインストールと同時にpostgresというユーザーがつくられるようです。
$ id postgresこのユーザー "postgres" にパスワードを設定します。
uid=26(postgres) gid=26(postgres) 所属グループ=26(postgres)
$ sudo passwd postgresパスワードが設定できたら、ユーザーを変更します。デフォルトでは、Ident認証という方式で認証を行うため、CentOSのユーザーとPostgreSQLのユーザーが一致していないとエラーになるようです。
$ su - postgres後は、createdbでデータベースを作成したり、 psqlで接続したりできます。
Ident認証ではなく、パスワード認証に変更したい場合は、postgresqlにユーザーを追加した後で、設定を変更します。
postgresユーザーでパスワード認証を行いたい場合は、次のようにしてパスワードを設定します。
ALTER USER postgres WITH PASSWORD 'newpassword';という具合です。postgresユーザーは最初から存在するのでALTER USERですが、新規ユーザーを追加するのであれば代わりに、CREATE USER文を使います。
パスワード認証を行うためには、DBの設定も変更する必要があります。設定ファイルなどは、たいてい「/var/lib/pgsql/data/」以下にあるようです。今回修正するのは、
/var/lib/pgsql/data/pg_hba.confというファイルです。「local all ident」という行をコメントアウトして「local all password」を追加します。
#local all all identこれでパスワードで認証することができます。たとえばユーザーがpostgresのときに、
local all all password
psql -U postgresとやれば、postgresユーザーで接続できます。
DjangoからPostgreSQLに接続する場合は、データベースの設定に、django.db.backends.postgresql_psycopg2を指定します。さらに次のコマンドで必要なモジュールをインストールしなくてはいけません。
$ sudo yum -y install python-psycopg2
0 件のコメント:
コメントを投稿