Чтение таблиц в удаленной базе данных mysql с помощью туннеля Django SSH
Я застрял с этим.
У меня есть доступ к удаленной базе данных MySQL, используя ssh туннель с IP
, Port
, ssh username
, ssh password
и используя учетные данные базы данных с Server Host
, Port
, DB Name
, user
и password
.
Я могу получить доступ к этой удаленной базе данных MySQL в DBeaver и Putty, используя ssh туннель и учетные данные базы данных
В моем приложении Django, в settings.py
ssh_tunnel = SSHTunnelForwarder(
(sshIpAdd, sshPort),
ssh_username=sshUser,
ssh_password=sshPass,
ssh_proxy_enabled=True,
# ssh_config_file=None,
remote_bind_address=('127.0.0.1', 3306),
)
ssh_tunnel.start()
print(ssh_tunnel.local_bind_port)
con=mysql.connector.connect(database=dbName,
host='localhost',
user=dbUser,
password=dbPass,
auth_plugin='mysql_native_password',
charset='utf8',
port=ssh_tunnel.local_bind_port)
if con!=None:
print("Connected to Mysql Remote Database")
else:
print("Sql Not Connected")
он выводит успешный результат и отображает Connected to Mysql Remote Database
(py39) X:>python manage.py runserver
65116 Подключен к удаленной Mysql База данных 65122
Connected to Mysql Remote Database
Выполнение системных проверки...Проверка системы не выявила проблем (0 промолчало). 20 июля 2022 - 12:55:06 Django версии 3.2.9, используя настройки 'test.settings' Запуск сервер разработки по адресу http://127.0.0.1:8000/ Выйти из сервера с помощью CTRL-BREAK.
Когда я выполняю команду 'python manage.py inspectdb --database=remote_db
', она успешно создает структуру модели из удаленной базы данных.
Проблема заключается в том, что когда я обращаюсь к удаленной базе данных в DATABASES с несколькими базами данных,
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': defaultDBName,
'USER': 'postgres',
'PASSWORD': defaultDBPass,
'HOST': 'localhost',
'PORT': '5432',
},
'remote_db': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost',
'PORT': ssh_tunnel.local_bind_port,
'NAME': dbName,
'USER': dbUser,
'PASSWORD': dbPass,
},
}
после выполнения команды "python manage.py migrate --database=remote_db
" ответ - ошибка,
Traceback (последнее последнее обращение):
File "X:\manage.py", line 22, in main() Файл "X:\manage.py", строка 18, in main execute_from_command_line(sys.argv) Файл "C:\Users\k\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management_init_.py", строка 419, в execute_from_command_line utility.execute() Файл "C:\Users\k\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management_init_.py", строка 413, в execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\Users\k\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py", строка 354, в run_from_argv self.execute(*args, **cmd_options) Файл "C:\Users\k\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py", строка 398, в execute output = self.handle(*args, **options) Файл "C:\Users\k\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py", строка 89, в wrapped res = handle_func(*args, **kwargs) Файл "C:\Users\k\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\commands\migrate.py", строка 244, в handle post_migrate_state = executor.migrate( Файл "C:\Users\k\AppData\Local\Programs\Python\Python310\lib\site-packages\django\db\migrations\executor.py", строка 91, в migrate self.recorder.ensure_schema() Файл "C:\Users\k\AppData\Local\Programs\Python\Python310\lib\site-packages\django\db\migrations\recorder.py", строка 70, в ensure_schema raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc) django.db.migrations.exceptions.MigrationSchemaMissing: Unable to создать таблицу django_migrations ((1142, "Команда CREATE отклонена для пользователю 'db_viewer'@'localhost' для таблицы 'django_migrations'"))
>
Я хочу только читать удаленную базу данных. Я новичок в Django.
Заранее спасибо.