Anzeige:
Ergebnis 1 bis 2 von 2

Thema: MySQL 1045 Access Denied, 2 Files, einer geht, der andere nicht?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    21.09.2003
    Ort
    nähe Münster
    Beiträge
    76

    MySQL 1045 Access Denied, 2 Files, einer geht, der andere nicht?

    Hallo Leute,

    benutze ein Debian Wheezy das ich gerade neu aufgesetzt habe, die Dateien liefen auf dem Vorgänger, auch ein Debian Wheezy, ohne Probleme. Könnte ein Rechte Poblem sein, aber alle Rechte stehen global auf lesbar. Die Login Zeile ist bei beiden Dateien gleich. Die eine Datei soll über Python eine CSV Datei in MySQL einspielen und klemmt, die andere Datei legt über Python die Tabelle in MySQL an und funktioniert wie gewünscht. Alle Dateien liegen im selbem Ordner und gehörem dem selben User.

    Hier mal die Datei die funktioniert.
    Code:
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import MySQLdb as mdb
    
    con = mdb.connect('localhost', 'user', 'passw', 'pizzadb2', charset='utf8')
    
    with con:
        
        cur = con.cursor()
        cur.execute("DROP TABLE IF EXISTS pizzeria_table3")
        cur.execute("CREATE TABLE pizzeria_table3(pizzeria_Id INT PRIMARY KEY AUTO_INCREMENT, \
                    laden_name VARCHAR(50), vorwahl VARCHAR(15), telenr1 VARCHAR(20), \
                    telenr2 VARCHAR(20), fax VARCHAR(20), strasse VARCHAR(40), hausnr VARCHAR(20), \
                    plz VARCHAR(20), ort VARCHAR(40), oeffz1 VARCHAR(40), oeffz2 VARCHAR(40), \
                    oeffz3 VARCHAR(40), oeffz4 VARCHAR(40), bestellwert1 VARCHAR(60), \
                    bestellwert2 VARCHAR(60),bestellwert3 VARCHAR(60),rumpf_daten VARCHAR(60), \
                    html_name VARCHAR(40), kartenname VARCHAR(30), linkname1 VARCHAR(40),\
                    linkname2 VARCHAR(40), linkname3 VARCHAR(40), ordner VARCHAR(100), \
                    spaltenanzahl INTEGER, logo_ordner VARCHAR(60), logo_name VARCHAR(60), \
                    forum_link VARCHAR(100), link2 VARCHAR(40), link3 VARCHAR(40), banner VARCHAR(100), \
                    UNIQUE(vorwahl, telenr1)) \
                    default character set 'UTF8' COLLATE utf8_general_ci")
    Und hier die Datei die klemmt, sie heißt datenimport4.py.
    Code:
    #!/usr/bin/python
    #-*- coding: utf-8 -*-
    
    import MySQLdb as mdb
    
    con = mdb.connect('localhost', 'pizzauser', 'sommer', 'pizzadb2', charset='utf8')
                      
    
    with con:
    
        cur = con.cursor()
        cur.execute("LOAD DATA INFILE 'Adressliste_forum1_v4.csv'\
                INTO TABLE pizzeria_table3 \
                FIELDS TERMINATED BY ',' \
                ENCLOSED BY '\"' \
                LINES TERMINATED BY '\\n'  \
                IGNORE 1 LINES \
                (laden_name, vorwahl, telenr1, strasse, hausnr, \
                ort, linkname1, linkname2, linkname3, forum_link, \
                link2, link3, banner) \
                ")
    Hier die Fehlermeldung.
    Code:
    gutschy@kiste:~/pizza/pizza_daten$ python datenimport4.py
    Traceback (most recent call last):
      File "datenimport4.py", line 21, in <module>
        ")
      File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
        self.errorhandler(self, exc, value)
      File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
        raise errorclass, errorvalue
    _mysql_exceptions.OperationalError: (1045, "Access denied for user 'pizzauser'@'localhost' (using password: YES)")
    Ich habe hier mal eine Frage aus einem anderem Forum zu meinem Problem, leider verstehe ich die Frage nicht ganz. Der Fragesteller möchte das der übergeordnete Ordner ausführbare Rechte hat? Ich dachte nur Dateien können ausführbar sein? Und es sollte doch einer CSV Datei egal sein, die ist doch eh nicht ausführbar. Aber wahrscheinlich kapier ich es einfach nicht.

    Hier die Frage:
    check access privileges on both Adressliste_forum1_v5.csv AND it's directory. the user running the MySQL server (NOT the user granted privs in the MySQL configuration, the UNIX user that mysql process is running under - you can check this with ps aux | grep mysql)

    the file must at least have read privileges for the user, and its parent directory must have execute privileges.
    hold on.

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.09.2003
    Ort
    nähe Münster
    Beiträge
    76
    Fein, habe die Lösung bekommen.


    The problem is that the user you are using has not enough permissions. The CSV file is being read from the data directory of the MySQL server and you are executing the script with user 'gutschy', but the MySQL server is (probably) running using the system user 'mysql'.

    However, you probably want to load the data a bit differently. You want to use the LOAD DATA LOCAL INFILE (note the 'LOCAL' keyboard). This means that the file will be uploaded to the MySQL server and then imported.

    Here are the relevant changes to your code:

    con = mdb.connect('localhost', 'user', 'passw', 'pizzadb2', charset='utf8'
    local_infile=1)

    ..
    with con:
    ..
    cur.execute("LOAD DATA LOCAL INFILE 'Adressliste_forum1_v4.csv'\
    ..
    For this to work, however, you need to change the MySQL server configuration. On Debian I like to do it adding an extra option file /etc/mysql/conf.d/server.cnf:

    [mysqld]
    local-infile=1
    Restart the MySQL server, and try your script using LOAD DATA LOCAL INFILE. Permissions should be OK.

    hold on.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •