Подключение Django к СУБД Azure MS SQL Server с использованием управляемой идентификации
Как я могу подключить мою базу данных Azure MS SQL Server к Django через управляемую идентификацию.
В настоящее время мой файл Django settings.py выглядит следующим образом :
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'HPI_SI_DB',
'HOST': 'abcengine.database.windows.net',
'USER': 'xyz',
'PASSWORD': '*******',
'OPTIONS': {'driver': 'ODBC Driver 17 for SQL Server', }
},
'DB2': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'HPI_SI_DB',
'HOST': 'abcdengine.database.windows.net',
'USER': 'xyz',
'PASSWORD': '*******',
'OPTIONS': {'driver': 'ODBC Driver 17 for SQL Server', }
}
}
Для настройки базы данных приложения в settings.py
. Введите информацию о базе данных MySQL, связанную с веб-сайтом Windows Azure.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'MYSQL-DATABASE-NAME',
'USER': 'MYSQL-SERVER-USER-NAME',
'PASSWORD': 'MYSQL-SERVER-USER-PASSWORD',
'HOST': 'MySQL-SERVER-NAME',
'PORT': '',
}
}
Далее, добавьте ваше приложение в параметр INSTALLED_APPS в settings.py.
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'myblog',
)
Из документации
ActiveDirectoryMsi
.Чтобы использовать управляемую идентификацию, добавьте
Authentication=ActiveDirectoryMsi
кextra_params
.DATABASES = { "default": { "ENGINE": "mssql", "NAME": "your_db", "HOST": "database.windows.net", "PORT": "1433", "OPTIONS": { "driver": "ODBC Driver 17 for SQL Server", "extra_params": "Authentication=ActiveDirectoryMsi", }, }, }
Если вы хотите запускать модульные тесты, то тестовая база данных должна быть создана вручную и вам необходимо передать аргумент
--keepdb
.Если вы получаете ошибку
VIEW ANY COLUMN MASTER KEY DEFINITION permission denied in database
, выполнитеEXEC sp_addrolemember N'db_owner', N'<Name>'
, заменив<Name>
на имя виртуальной машины в system-assigned managed identity или на имя managed identity в user-assigned managed identity.