Bueno, tengo varias bases de datos en el proyecto django. Uno es default y el segundo es test_dev . He creado un contenedor docker. y luego todo fue bien hasta construir el contenedor. después de eso, cuando trato de llamar a mi aplicación django api que está usando test_dev db para leer datos. me he encontrado:
OperationalError at /api/projects/ (1045, "Access denied for user 'test_dev'@'xxx.xxx.xxx.xxx' (using password: YES)")En el archivo de configuración, la configuración de mis bases de datos:
{ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': Path(__file__).resolve().parent.parent / 'db.sqlite3', }, "test_dev" : { 'ENGINE': 'django.db.backends.mysql', 'NAME': "test", 'USER': 'test_dev', 'PASSWORD': 'db_password', 'HOST': '?=hosted_domain', 'PORT': '3306', 'SSL': True } }Si sabes alguna solución. Por favor, échame una mano con esto. Pronto tengo que poner cosas en producción..
Este es un problema con los privilegios de acceso a la base de datos. La contraseña es incorrecta, el usuario no recibió permisos para la base de datos o tabla específica que necesita, o la dirección IP del contenedor de Django no coincide con la vinculada al usuario.
El siguiente SQL:
CREATE USER IF NOT EXISTS 'test_dev'@'%' IDENTIFIED BY 'db_password'; GRANT ALL PRIVILEGES ON test.* TO 'test_dev'@'%';Creo que al crear la base de datos para el contenedor, su usuario no obtuvo los permisos deseados, para otorgar permisos, use el siguiente fragmento.
En tu terminal:
mysql -h 127.0.0.1 -P 3306 -u root -pla contraseña es: contraseña (predeterminada)
Después de eso, show databases; y use test_dev;
Ahora, puede verificar las concesiones usando show grants; comando, ya que el usuario de todos los hosts no tiene ningún permiso (o tal vez no hay ningún usuario), así que use el siguiente comando para otorgar privilegios:
CREATE USER IF NOT EXISTS 'test_dev'@'%' IDENTIFIED BY 'db_password'; GRANT ALL PRIVILEGES ON test.* TO 'test_dev'@'%';Bueno, resolví mi problema cambiando el motor. Reemplacé la siguiente línea:
'ENGINE': 'django.db.backends.mysql',con :
'ENGINE': 'mysql.connector.django', este código resuelve mi error actual, pero después de esto me encontré con otro error que resuelvo editando el archivo requirements.txt :
mysql-connector-python==8.0.27para :
mysql-connector-python==8.0.26