Problem mit MySqldb

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
pooner
User
Beiträge: 37
Registriert: Montag 15. Mai 2006, 08:04

Hallo Leute,

wahrscheinlich habe ich einen Denkfehler oder ähnliches, daher brauche ich eure Hilfe.

Ich habe eine Funktion die Parameter wie Username und Passwort übergeben bekommt. Mithilfe dieser Funktion soll dann eine Datenbank, ein Datenbankbenutzer und die entsprechenden Datenbankrechte vergeben werden. Das funktioniert soweit auch. möchte ich mich jedoch dann als DB-Benutzer einloggen geht es nicht. Nach Überprüfung durch root DB-User ist die Datenbank, der User angelegt und die Rechte sind gesetzt. Ich habe dann versucht das Passwort zu ändern, kann mich aber noch immer nicht auf der Konsole einloggen.

Code: Alles auswählen

#
def database(str_name):
#
 passwd='"' + get_pwd() + '"'
 print passwd
 print frm_line + " Datenbank-Konfiguration " + frm_line
 try:
  db=MySQLdb.connect(host="localhost",user="root",passwd="unkenntlich",)
  print "Datenbankverbindung hergestellt ...."
  db.query("""CREATE DATABASE `%s`""" % (str_name))
  print "Datenbank wurde angelegt"
  #  time.sleep(2)
  db.query("""CREATE USER `%s` IDENTIFIED BY %s""" % (str_name, passwd))
  print "Datenbankbenutzer wurde angelegt"
  db.query("""GRANT SELECT,INSERT,DROP,UPDATE,DELETE,CREATE,INDEX,ALTER,CREATE TEMPORARY TABLES,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,EXECUTE ON `%s`.* TO `%s`@'lo$
  print "Datenbankrechte wurden gesetzt"
  db.close()

 except MySQLdb.Error, e:
    print "Error %d: %s" % (e.args[0], e.args[1])
    sys.exit (1)
 print frm_line + " Datenbank-Konfiguration abgeschlossen " + frm_line


Irgendwelche Ideen ?

Danke für eure Hilfe
pooner
User
Beiträge: 37
Registriert: Montag 15. Mai 2006, 08:04

Okay, habe nun festgestellt das das Login nach Passwortänderung in der Datenbank und ein "FLUSH PRIVILIGES" jetzt klappt.

Das lässt mich vermuten das das Passwort nicht sauber übergeben wird. Kann mir da jamand weiter helfe? !
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Bei `.execute()` sollte man die Parameter als Argument übergeben (und nicht per %-Operator vorher direkt in den SQL-String einfügen), ist das bei `.query()` nicht auch der Fall? Damit lassen sich jedenfalls Probleme durch fehlende Maskierung vermeiden.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

siehe auch [wiki]Parametrisierte SQL-Queries[/wiki] :lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
pooner
User
Beiträge: 37
Registriert: Montag 15. Mai 2006, 08:04

Danke, muss ich mal probieren umzubauen. Gebe dann eine Rückmeldung
pooner
User
Beiträge: 37
Registriert: Montag 15. Mai 2006, 08:04

Mein Fehler war die Stringlänge des Passwortes. Die parametrisierte Lösung klappt jetzt auch THX
Antworten