【问题标题】:Access remote database failed,"(1045,Access denied for user......)"访问远程数据库失败,“(1045,用户访问被拒绝......)”
【发布时间】:2016-07-05 00:00:30
【问题描述】:

本地机器环境:

  • centos 6.7
  • python 2.7.10
  • Flask-MySQLdb 0.2.0
  • 本地ip:112.25.76.72
  • 远程ip:221.228.203.203

这两个代码都在本地机器上运行;

当我像这样在本地 python 命令行环境中访问远程数据库时:

>>>import MySQLdb
>>>conn = MySQLdb.connect(host="221.228.203.203",user="test_user",passwd="test_passwd",db="test_db",charset="utf-8")

它访问成功,但是当我将这些代码写入python脚本login.py时:

import MySQLdb

conn = None

try:
    conn = MySQLdb.connect(host="221.228.203.203",user="test_user",passwd="test_passwd",db="test_db",charset="utf-8")
    cur = conn.cursor()

except Exception,e:
    print e

finally:
    if conn:
        conn.close()

然后在终端执行“python login.py”,访问失败,错误信息为:

(1045, "Access denied for user 'test_user'@'112.25.76.72' (using password: YES)")

为什么?他们的python环境是一样的。

如果你能解决,请帮助我。

【问题讨论】:

  • 你在哪里运行了第一个代码?从本地主机?可能是用户 test_user 只能从 localhost 登录。你应该检查你的数据库或用户的配置。代码是对的。 “用户'test_user'@'112.25.76.72'的访问被拒绝显示你运行第二个代码的机器的ip(112.25.76.72)
  • 是的,这两个代码都在本地机器上运行,ip是“112.75.76.72”。我应该检查哪个配置文件???

标签: python database mysql-python


【解决方案1】:

您应该检查您的用户在数据库服务器中的配置。它将存储在数据库mysql中。 您可以通过以下方式获取用户列表:

SELECT user, host FROM mysql.user;

您不应该删除用户 test_user@localhost。你可以尝试在你的数据库服务器上执行它

CREATE USER 'test_user'@'%' IDENTIFIED BY 'test_passwd'
GRANT ALL PRIVILEGES ON *.* TO 'test_user'@'%'  WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'test_user'@'localhost'  WITH GRANT OPTION;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-27
    • 2016-08-08
    • 2017-03-10
    • 2021-04-09
    • 1970-01-01
    • 2016-04-25
    • 2022-07-15
    • 2020-10-10
    相关资源
    最近更新 更多