一开始踩到了一些坑,因此记录一下,方便日后复用。目前为止,本文都是在 Manjaro Linux 上测试通过的。
安装
通过 pamac-manager
或者 paman
之类的包管理器安装
然后登录数据库:
sudo su - postgres
initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'
pg_ctl -D /var/lib/postgres/data -l logfile start
然后执行下述命令登录管理界面:
psql postgres
如果出现类似下述内容,说明登录成功:
[postgres@pc-lab ~]$ psql postgres
psql (9.6.5)
Type "help" for help.
postgres=#
然后给 postgres 设置登录密码:(据说不设置的话无法通过 TCP/IP 访问数据库。。。)
\password postgres
Enter new password:
Enter it again:
排错
Linux
如果出现下述提示:
/bin/sh: logfile: Permission denied
你可能需要查看一下 /var/lib/postgres
的权限。如果不是 postgres:postgres
,需要在 root 状态下执行:
chown -R postgres:postgres /var/lib/postgres
如果没有上述报错,能创建 logfile,但是执行 psql postgres
时出错,查看 logfile 有下述提示:
FATAL: could not create lock file "/run/postgresql/.s.PGSQL.5432.lock": No such file or directory
这里的 /run/postgresql/.s.PGSQL.5432.locl
可能各人不同,有的系统上可能是 /var/run
开头。无论如何,这时候可以看看是否存在 /run/postgresql
这个目录。如果没有,请在 root 状态下创建该目录,并将该目录授权给 postgres。
Mac OS
若使用 Homebrew 安装,可参考
https://stackoverflow.com/a/27925369
和
https://stackoverflow.com/questions/21122598/postgres-user-does-not-exist
即运行下述两条命令来运行数据库:
/bin/rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8
pg_ctl -D /usr/local/var/postgres -l logfile start
常用命令
\l #查看已有数据库列表
CREATE DATABASE db_name # 创建一个数据库
\c db_name #连接到某个数据库
SELECT current_user; # 查看当前用户
数据导入 -U 是 user,database 是数据库, table 是被导入的表
psql -U postgres -h 127.0.0.1 database table < entity.sql