2010-03-14 19 views
18

tengo toda la disposición de trabajar durante meses en mi equipo local de
estoy instalando en un sitio remoto ahora
Creado Un base de datos MySQL fresca, y ha creado una.. nuevo usuario ("someuser") y se la dio becas completas, al igual que -Django: mysql: 1045, "Acceso denegado para el usuario

conceder a todos los privilegios en A 'someuser' @ 'localhost' IDENTIFICADAS POR 'somepassword' WITH GRANT OPTION;

.

He sincronizado el db, nosotros ing "python manage.py syncdb" y se crearon las tablas correctas. Mi settings.py tiene este mismo usuario.

Pero cuando intento acceder a un usuario a través de la aplicación, y que llega a la base de datos, veo lo siguiente en los registros -

(1045, "Acceso denegado para 'someuser' usuario @ 'localhost '(using password: YES) ")

que accede a través de MySQL (instalado en la misma caja que Django) y se verificaron las subvenciones y se muestra correctamente -

ayudas para someuser @ localhost
OTORGUE TODOS LOS PRIVILEGIOS EN *. * A 'someuser' @ 'localhost' IDENTIFICADAS POR CONTRASEÑA '* thesaltedpasswordOverHere' WITH GRANT OPTION

no quiero usar el usuario root/contraseña para Django, ya que no parece el camino correcto.

¿Alguna sugerencia sobre qué podría estar mal?

+0

¿Recuerdas si lo hiciste funcionar? – theblang

Respuesta

22

lo hago así por un foo_db llamado base de datos:

create database foo_db; 
create user foo_user identified by 'foo_password'; 
grant all on foo_db.* to 'foo_user'@'%'; 
flush privileges; 
+0

¡Gracias que ayudó! Creo que la razón es que primero creé los usuarios y luego la base de datos. Eso es muy extraño, porque cuando miras la subvención y dice que tienes acceso a *. * Es engañosa. También debe aplicarse a lo que se crea después de esa instancia. – PlanetUnknown

+0

En realidad estoy tratando de hacer lo mismo que PlanetUnknown. Seguí tu método, pero sigo teniendo el mismo error. – theblang

0

@ mattblang:

En este caso se ayuda a si el host se encuentra en el archivo de settings.py realmente utilizado también.

para mí es /etc/graphite/local_settings.py donde el DATABASES Stanzas tenían un valor incorrecto, por HOST hubo: 'HOST': '127.0.0.1',

Debido a que durante el tiempo de ejecución de comandos syncdb se buscó localhost, lo cambié a 'HOST': 'localhost',

ahora se ve algo como esto:

DATABASES = { 
    'default': { 
     'NAME': 'graphite', 
     'ENGINE': 'django.db.backends.mysql', 
     'USER': 'graphite', 
     'PASSWORD': 'thepasswordyouchoose', 
     'HOST': 'localhost', 
     'PORT': '3306' 
    } 
} 

... y ahora el comando syncdbpython manage.py syncdb se ejecuta con éxito.

5

En mi caso la configuración.py tiene la siguiente:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'TRYDJANGO', 
     'USERNAME':'user_trydjango', 
     'PASSWORD':'passtry', 
     'PORT':'3306', 
     'HOST': 'localhost', 
    } 
} 

y funciona si cambio el 'NOMBRE DE USUARIO' a 'USUARIO':

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'TRYDJANGO', 
     'USER':'user_trydjango', 
     'PASSWORD':'passtry', 
     'PORT':'3306', 
     'HOST': 'localhost', 
    } 
} 
0

también cambiar el número de puerto a '3307'if MySQL-pitón de 64 bits en settings.py, entonces solo ocurre la conexión en Windows y MySql 5.7 django.

'3306' para MySQL-pitón de 32 bits

DATABASES = { 
    'default': { 
     'NAME': 'graphite', 
     'ENGINE': 'django.db.backends.mysql', 
     'USER': 'graphite', 
     'PASSWORD': 'thepasswordyouchoose', 
     'HOST': 'localhost', 
     'PORT': '3307' 
    } 
} 
0

Refiriéndose a la respuesta de @duffymo y cambiaron la última declaración podría funcionar para mí.

create database foo_db; 
create user foo_user identified by 'foo_password'; 
grant all on foo_db.* to [email protected] identified by 'foo_password' with grant option; 
0

por lo que he entendido que someuser es un usuario de DB y no el administrador, ¿no?

Si es así, desde su administrador de base de datos MySQL de usuario, conceder someuser acceder a MySQL tabla de entorno 'mysql.user' de la siguiente manera:

GRANT SELECT en mysql. user TO 'someuser' @ '%';

A mi me funcionó, Ivan

0

Yo uso esta configuración, y funciona.

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
    'OPTIONS': { 
     'read_default_file': '/etc/my.cnf', 
    }, 
     #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 
0

Parece que todo lo que he hecho es:

  1. deje caer mi base de datos
  2. caer el usuario
  3. volver a crear el usuario
  4. volver a crear la base de datos
  5. otorgar a este usuario privilegios de descarga

y luego comienza a funcionar.

+0

Gracias por tomarse el tiempo para contribuir con una respuesta. Es gracias a los compañeros útiles como usted que podemos aprender juntos como una comunidad. Aquí hay algunos consejos sobre cómo hacer que su respuesta sea excelente: [Cómo escribo una buena respuesta] (https://stackoverflow.com/help/how-to-answer). – Brien

Cuestiones relacionadas