Это конфигурация по умолчанию для локального соединения postgresql с использованием фреймворка Django в файле setting.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'LOCAL_DB_NAME',
'USER': 'LOCAL_DB_USER',
'PASSWORD': 'LOCAL_DB_PASS',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
Как настроить его для работы с управляемой базой данных Google Cloud Postgresql?
Прежде всего вам нужно настроить конфигурацию базы данных так:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'DATABASE_NAME',
'USER': 'DB_USER_NAME',
'PASSWORD': 'DB_USER_PASS',
# https://console.cloud.google.com/sql/instances
'HOST': '<ip of your google instance>',
'PORT': '5432', #at the moment of this writing google cloud postgresql is using the default postgresql port 5432
'OPTIONS': {
'sslmode': 'verify-ca', #leave this line intact
'sslrootcert': '/your/path/to/server-ca.pem',
"sslcert": "/your/path/to/client-cert.pem",
"sslkey": "/your/path/to/client-key.pem",
}
}
}
Получить ip / имя хоста от: https://console.cloud.google.com/sql/instances
Чтобы создать и загрузить три файла pem, вам нужно посетить что-то вроде этого:
https://console.cloud.google.com/sql/instances/INSTANCE_NAME/ssl
Затем нажмите кнопку «Сертификат клиента».
Чтобы действительно разрешить удаленное соединение (если вы запускаете django локально для разработки), вам нужно щелкнуть вкладку АВТОРИЗАЦИЯ справа (https://console.cloud.google.com/sql/instances/INSTANCE_NAME/authorization), а затем ввести свой общедоступный IP-адрес или общедоступную сеть вашей организации. Только этот ip / сеть будет разрешен доступ.
Чтобы фактически сгенерировать экземпляр вместе с выбором postgresql, генерации пользователя и пароля, вам необходимо следовать этому руководству: https://cloud.google.com/sql/docs/postgres/quickstart
Теперь обычный python manage.py makemigrations --settings=settings.my_settings
должен работать нормально
Если вам нужно проверить соединение с помощью psql, вы можете подключиться с помощью этой команды в терминале:
psql "sslmode=verify-ca sslrootcert=/your/path/to/server-ca.pem \
sslcert=/your/path/to/client-cert.pem \
sslkey=/your/path/to/client-key.pem \
hostaddr=<ip address of google cloud instance> \
user=<your db username> dbname=<your db name>"
вам будет предложено ввести пароль
Наслаждаться!
Привет, твой ответ действительно хорош. Я предлагаю вам добавить к нему дополнительную документацию, чтобы сделать его идеальным, например как настроить SSL для экземпляров и, как вы упомянули, как проверить соединение с psql.