【问题标题】:Issue to connect into a mysql database with MySQLdb module (python)使用 MySQLdb 模块 (python) 连接到 mysql 数据库的问题
【发布时间】:2017-02-24 01:26:49
【问题描述】:

我在 mysql 中有一个数据库,我想连接到它。我正在尝试使用 Python 中的这个模块,称为 MySQLdb。我为这个数据库(abc)创建了一个用户(称为abc)和密码(abc),它有一个表并且连接正常(当我通过mysql命令行连接时)。

但是当我运行我的 python 脚本时,连接出现错误。 我的脚本是:

#!/usr/bin/python
import MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","abc","abc","abc")

# prepare a cursor object using cursor() method
cursor = db.cursor()

# execute SQL query using execute() method.
cursor.execute("SELECT VERSION()")

# Fetch a single row using fetchone() method.
data = cursor.fetchone()
print "Database version : %s " % data

# disconnect from server
db.close()

我的错误是:

    Traceback (most recent call last):
    File "./test.py", line 8, in <module>
    db = MySQLdb.connect("localhost","abc","abc","abc")
    File "/usr/local/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
        return Connection(*args, **kwargs)
     File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 193, in __init__
        super(Connection, self).__init__(*args, **kwargs2)
 _mysql_exceptions.OperationalError: (1044, "Access denied for user 'abc'@'localhost' to database 'abc'")

怎么了?我的脚本或我的mysql中的东西? 我将 localhost 更改为 127.0.0.1(如另一篇文章中所建议的那样,但没有解决我的问题。

我还检查了这个 mysql 用户的权限:

SHOW GRANTS;
+------------------------------------------------------------------------------+
| Grants for abc@localhost                                                                              |
+------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'abc'@'localhost'                                                               |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, CREATE VIEW ON `abc`.* TO 'abc'@'localhost' |
+------------------------------------------------------------------------------+

【问题讨论】:

    标签: python mysql database


    【解决方案1】:

    您可能需要重新启动 mysql 守护程序才能使权限生效。或者使用flush privileges 命令。 https://dev.mysql.com/doc/refman/5.7/en/privilege-changes.html

    【讨论】:

    • 谢谢。我在 mysql 中再次创建了我的数据库,使用了刷新,并且我还使用了一个似乎有帮助的额外命令:在 . 上将使用权限授予由 'abc' 标识的 abc@localhost;
    猜你喜欢
    • 2011-01-19
    • 2015-07-31
    • 2011-09-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多