Mac に MacPorts で PostgreSQL をインストールする。
下記サイトの焼き増しになります。
基本的には、下記サイトを見たほうが良いと思います。
MacPortsでPostgreSQLをセットアップするメモ - 平常運転
インストール
postgresql を探す。
$ port search sql | grep ^postgresql ... postgresql93 @9.3.4 (databases) postgresql93-doc @9.3.4 (databases) postgresql93-server @9.3.4 (databases) postgresql94 @9.4beta1 (databases) postgresql94-doc @9.4beta1 (databases) postgresql94-server @9.4beta1 (databases) ...
9.4 は beta か(´・ω・`)
9.3 君に決めた(`・ω・´)m9
$ sudo port install postgresql93 Password: ---> Computing dependencies for postgresql93 ---> Dependencies to be installed: libxslt ossp-uuid postgresql_select readline ---> Fetching archive for libxslt ... # ↓server もインストールしてね(ゝω・)vキャピ と言ってます。 To use the postgresql server, install the postgresql93-server port ---> Activating postgresql93 @9.3.4_0 ---> Cleaning postgresql93 ---> Updating database of binaries ---> Scanning binaries for linking errors ---> No broken files found.
サーバインストールします。
$ sudo port install postgresql93-server ... # ↓ これもしてね(ゝω・)vキャピ と言ってます。 To create a database instance, after install do sudo mkdir -p /opt/local/var/db/postgresql93/defaultdb sudo chown postgres:postgres /opt/local/var/db/postgresql93/defaultdb sudo su postgres -c '/opt/local/lib/postgresql93/bin/initdb -D /opt/local/var/db/postgresql93/defaultdb'
ちなみに
$ which psql
$ # 無反応(パスが通っていないから)
さてはて...
焦って$PATHに/opt/local/lib/postgresql93/bin/を追加するのは良くない。
MacPortsでPostgreSQLをセットアップするメモ(引用もとのページ)
MacPortsでは、このテの hogeXXってバージョン分かれてるportは、大概
port select hoge hogeXX して特定のバージョンを選ばないとパスが通らない。
たとえばrubyとかmysqlとかpythonとかもそんな感じ。
なるほど、勉強になります(`・ω・´)
そこでワイ氏も postgresql と postgresql93 を対応付けます。Python をいれたときも、やったなぁ(遠い目)。
$ # ① 一覧を表示させて、 $ port select --list postgresql Available versions for postgresql: none (active) postgresql93 $ $ # ② select します。 $ sudo port select --set postgresql postgresql93 Selecting 'postgresql93' for 'postgresql' succeeded. 'postgresql93' is now active.
ちなみに
postgresql に set したけど psql にリンク付けされる。
$ which psql /opt/local/bin/psql $ which postgresql $ # 無反応(´・ω・`)
デフォルトのデータベースを設定します。sudo port install postgresql93-server を実行したときに、書かれていた3つのコマンドです。
$ sudo mkdir -p /opt/local/var/db/postgresql93/defaultdb $ sudo chown postgres:postgres /opt/local/var/db/postgresql93/defaultdb $ sudo su postgres -c '/opt/local/lib/postgresql93/bin/initdb -D /opt/local/var/db/postgresql93/defaultdb' The files belonging to this database system will be owned by user "postgres". This user must also own the server process. ... Success. You can now start the database server using: /opt/local/lib/postgresql93/bin/postgres -D /opt/local/var/db/postgresql93/defaultdb or /opt/local/lib/postgresql93/bin/pg_ctl -D /opt/local/var/db/postgresql93/defaultdb -l logfile start
(ここから追記)
サーバ起動、接続方法
方法① psql が提示した方法 1 で失敗
- sudo では実行できません!
- sudo 無しでも実行権限ありません!
みたいなエラー(´;ω;`)ブワッ
$ /opt/local/lib/postgresql93/bin/postgres -D /opt/local/var/db/postgresql93/defaultdb postgres cannot access the server configuration file "/opt/local/var/db/postgresql93/defaultdb/postgresql.conf": Permission denied $ $ $ sudo /opt/local/lib/postgresql93/bin/postgres -D /opt/local/var/db/postgresql93/defaultdb "root" execution of the PostgreSQL server is not permitted. The server must be started under an unprivileged user ID to prevent possible system security compromise. See the documentation for more information on how to properly start the server.
方法② psql が提示した方法 2 でも失敗
- sudo では実行できません!
- sudo 無しでも実行権限ありません!
ここでも、そんなエラー(´;ω;`)ブワッ
$ /opt/local/lib/postgresql93/bin/postgres -D /opt/local/var/db/postgresql93/defaultdb postgres cannot access the server configuration file "/opt/local/var/db/postgresql93/defaultdb/postgresql.conf": Permission denied $ $ $ sudo /opt/local/lib/postgresql93/bin/postgres -D /opt/local/var/db/postgresql93/defaultdb "root" execution of the PostgreSQL server is not permitted. The server must be started under an unprivileged user ID to prevent possible system security compromise. See the documentation for more information on how to properly start the server.
方法③ 参照先のブログが提示している方法でも失敗。
え?
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql93-server.plist org.macports.postgresql93-server: Already loaded $ sudo launchctl start org.macports.postgresql93-server $ sudo psql -U postgres psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
方法④ 参照先のブログが提示している方法で再起動するとはいれた。
$ sudo launchctl stop org.macports.postgresql93-server $ sudo launchctl start org.macports.postgresql93-server $ psql -U postgres psql (9.3.4) Type "help" for help. postgres=# \q
(ここまで追記)
ちょっとしたテーブルの追加など
チュートリアルに書かれてる内容のテーブルを作る(´・ω・`)
ログイン
$ psql -U postgres psql (9.3.4) Type "help" for help.
データベース作成
postgres=# create database mydatabase;
CREATE DATABASE
データベース一覧表示
postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ------------+----------+----------+---------+-------+----------------------- mydatabase | postgres | UTF8 | C | UTF-8 | postgres | postgres | UTF8 | C | UTF-8 | ...
ユーザ一覧表示
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication | {}
パスワード変更
postgres=# alter role postgres with password 'postgres'; ALTER ROLE
ユーザ作成
postgres=# create user mydatabaseuser;
CREATE ROLE
新しく作ったテーブルのオーナーを変更。
PostgreSQLにてデータベースの所有者を変更するには
postgres=# select usesysid from pg_user where usename = 'mydatabaseuser'; usesysid ---------- 16385 (1 row) postgres=# update pg_database set datdba = 16385 where datname = 'mydatabase'; UPDATE 1 postgres=# alter role mydatabaseuser with password 'mypassowrd'; ALTER ROLE