-
Notifications
You must be signed in to change notification settings - Fork 7
PostgreSQL
Нужно при первом запуске прокинуть в контейнер переменную POSTGRES_PASSWORD
:
environment:
POSTGRES_PASSWORD: example
При первом запуске скрипт initdb
создаст папку для базы данных и инициализирует файлы в ней, пользователя POSTGRES_USER
(по умолчанию - postgres
) с паролем POSTGRES_PASSWORD
.
При последующих запусках переменные POSTGRES_USER
и POSTGRES_PASSWORD
не учитываются (см. entrypoint образа)
CREATE USER myuser WITH PASSWORD 'myPassword';
CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON DATABASE mydb to myuser;
ALTER USER user_name WITH PASSWORD 'new_password';
-
Список всех пользователей:
SELECT u.usename AS "User name", u.usesysid AS "User ID", CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('superuser, create database' AS pg_catalog.text) WHEN u.usesuper THEN CAST('superuser' AS pg_catalog.text) WHEN u.usecreatedb THEN CAST('create database' AS pg_catalog.text) ELSE CAST('' AS pg_catalog.text) END AS "Attributes" FROM pg_catalog.pg_user u ORDER BY 1;
-
Список баз данных, к которым пользователь может присоединиться:
SELECT u.usename, (SELECT string_agg(d.datname, ',' ORDER BY d.datname) FROM pg_database d WHERE has_database_privilege(u.usename, d.datname, 'CONNECT')) AS allowed_databases FROM pg_user u ORDER BY u.usename
-
Список пользователей, котором разрешено присоединяться к базе:
SELECT d.datname, (SELECT string_agg(u.usename, ',' order by u.usename) FROM pg_user u WHERE has_database_privilege(u.usename, d.datname, 'CONNECT')) AS allowed_users FROM pg_database d ORDER BY d.datname;
docker exec <postgres-old> pg_dumpall -U postgres | docker exec -i <postgres-new> psql -U postgres
Эта команда сделает дамп из старого PostgreSQL и сразу же импортирует в новый. Не забудьте подменить <postgres-old>
и <postgres-new>
на ваши актуальные имена (или id) контейнеров.
Также, лучше сначала сделать sudo su
т.к. пайп |
нельзя направить через sudo
команде после sudo
.
Footer is under construction
Sidebar is under construction