python - 1045、 "Access denied"使用两个 python 文件,一个有效,另一个 "Access denied"?

标签 python mysql

在两个文件中使用相同的 mdb.connect 行。使用 debian 7,我的问题现在是向您提供更多详细信息,因为我在问题中使用了很多代码,但我没有什么可告诉的。 文件 1 工作正常。

#!/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")

文件 2“datenimport4.py”出错:

#!/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("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) \
            ")

这里的错误:

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
'user'@'localhost' (using password: YES)")

我也检查过 MySQL 拨款。

GRANT ALL PRIVILEGES ON pizzadb2.* TO 'user'@'localhost'

论坛要求我提供更多代码,但不知道如何更详细地解释我的问题

最佳答案

问题是您使用的用户没有足够的权限。正在从 MySQL 服务器的数据目录读取 CSV 文件,并且您正在使用用户“gutschy”执行脚本,但 MySQL 服务器(可能)正在使用系统用户“mysql”运行。

但是,您可能希望以不同的方式加载数据。您想要使用LOAD DATA LOCAL INFILE(注意“LOCAL”键盘)。这意味着该文件将被上传到MySQL服务器,然后导入。

以下是对代码的相关更改:

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

..
with con:
    ..
    cur.execute("LOAD DATA LOCAL INFILE 'Adressliste_forum1_v4.csv'\
    ..

但是,要使其正常工作,您需要更改 MySQL 服务器配置。在 Debian 上,我喜欢添加一个额外的选项文件 /etc/mysql/conf.d/server.cnf:

[mysqld]
local-infile=1

重新启动 MySQL 服务器,并使用 LOAD DATA LOCAL INFILE 尝试您的脚本。权限应该没问题。

关于python - 1045、 "Access denied"使用两个 python 文件,一个有效,另一个 "Access denied"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23818797/

相关文章:

php - mysql在一行中获取多个id

python - 用于解码 RNN 输出的波束搜索算法

python - PySpark:一次性在多个列上运行相同的操作

MySQL 计算上一年客户的订单数量

java - 将 JDateChoose 插入 MySQL

java - 我的代码有什么问题数据源拒绝建立连接,来自服务器的消息 : "Too many connections"

python - 使用 Python 打印新 .json 文件中的每一行 json

python - Caffe 未在 python 中导入

带上下文的 Python 日志记录

mysql - 从右表中获取所有行 - Eloquent Laravel