最近有项目用到PostgreSQL,本地macOS开发环境需要用来开发测试,算是新接触,部分情况跟以往熟悉的MySQL不太相同,特地将部分部分需要用到的命令做个记录。 搜索及安装如标题所示,系统是macOS,没有选择官网下载安装包而是利用Homebrew进行安装,Homebrew本身的设置及安装不谈,只说PostgreSQL相关。 PostgreSQL版本查看: zoco@192:~➤ brew search postgresql==> Formulaepostgresql postgresql@11 postgresql@13 postgresql@9.5 qt-postgresqlpostgresql@10 postgresql@12 postgresql@9.4 postgresql@9.6 postgrest==> Casksnavicat-for-postgresql 可以看出,目前(2022年10月)Homebrew是支持从9.4开始到最新的14版本,我是选择最新的14版本,如果有版本需求的,安装的时候可以带上版本号进行安装,命令如下: brew install postgresql# 或者直接带上版本号安装brew install postgresql@14 PostgreSQL初始化操作macOS系统上Homebrew安装PostgreSQL默认会进行初始化操作,如果是别的系统或者更新之后: initdb --locale=C -E UTF-8 /usr/local/var/postgres 如果测试环境出错导致服务无法启动,可以通过如下命令重新初始化PostgreSQL,操作之前记得先备份对应的文件夹: cp -a /usr/local/var/postgres /usr/local/var/postgres-bakrm -rf /usr/local/var/postgresinitdb --locale=C -E UTF-8 /usr/local/var/postgres 启动及停止之所以采用Homebrew安装PostgreSQL而不是使用官网安装包下载安装,原因之一就是可以借助Homebrew进行PostgreSQL的进程控制,相关命令: brew service start postgresql@14brew service restart postgresql@14brew service stop postgresql@14 上述三行命令分别是启动、重启及停止PostgreSQL服务,最后尾的14是版本号,需要跟上述安装的版本号一致。 登录PostgreSQL和MySQL不同,初始安装PostgreSQL之后,默认是使用postgre用户登录,且不需要密码,直接就能登录,命令如下: psql postgres 如果需要创建具有管理权限的新角色,可以使用如下命令: CREATE ROLE cloudbool WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'cloudbool_password'; 使用新创建的账户及密码登录: psql -U pg_user -W# 输入密码 如果需要指定远程主机及端口,命令如下: psql -h 127.0.0.1 -p 5432 -U cloudbool -W# 输入密码 PostgreSQL常用Shell操作命令和MySQL稍许不同,如果在Shell里面查看数据库、表及用户等信息,不是简单的select操作,PostgreSQL提供部分别的命令。 列出数据库中所有用户: \du 列出所有数据库: \l 连接到数据库: \c database_name 列出数据库中的所有表: \d PostgreSQL schema操作跟MySQL相比,PostgreSQL多了一个schema,一般情况下,创建数据库的时候会自动创建一个名为public的schema,手动创建schema命令如下: CREATE SCHEMA test_schema; 创建表的过程中,如果没有指定schema,默认会将表归属到public schema,如果需要将表创建到指定schema,则命令如下: CREATE TABLE test_schema.test_table (); 也即schema名称跟上表的名称。 PostgreSQL导入与导出PostgreSQL的dump: pg_dump -U cloudbool_user -W cloudbool_db > cloudbool_dump.sql 使用dump出的文件恢复数据库信息: psql -U cloudbool_user -W cloudbool_db -f cloudbool_dump.sql 其中上述命令的cloudbool_user是用户名,cloudbool_db是对应的数据库,后续cloudbool_dump.sql是dump出的sql文件。 |