Problem mit MySqldb

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

Problem mit MySqldb

Beitragvon pooner » Montag 26. November 2007, 10:02

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

Nachtrag

Beitragvon pooner » Montag 26. November 2007, 16:07

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

Beitragvon Y0Gi » Montag 26. November 2007, 17:33

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 27. November 2007, 08:25

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
pooner
User
Beiträge: 37
Registriert: Montag 15. Mai 2006, 08:04

Beitragvon pooner » Dienstag 27. November 2007, 12:12

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

GELÖST

Beitragvon pooner » Mittwoch 28. November 2007, 08:55

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder