【问题标题】:Cannot connect MySQL database from django无法从 django 连接 MySQL 数据库
【发布时间】:2013-09-10 04:46:19
【问题描述】:

我正在尝试从 Django 应用程序连接我的 MySql 服务器,但每当我运行命令 python manage.py runserver 时,它都会显示错误:

 File "/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-linux-i686.egg/MySQLdb/connections.py", line 187, in __init__
 _mysql_exceptions.OperationalError: (1045, "Access denied for user 'user'@'localhost' (using password: NO)")

但我的 settings.py 连接字符串是这样的:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'django_personnel',       # Or path to database file if using sqlite3.
        'USER': 'root',                   # Not used with sqlite3.
        'PASSWORD': 'personnel',          # Not used with sqlite3.
        'HOST': '127.0.0.1', # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '3306',        # Set to empty string for default. Not used with sqlite3.
    }
} 

但我可以很容易地从 mysql shell 连接数据库:

 mysql -u root -ppersonnel django_personnel

请指导我。提前致谢。

【问题讨论】:

  • 您必须确保数据库能够识别用户和密码,并且您可以将主机和端口留空
  • @drabo2005 mysql -u root -ppersonnel django_personnel 这在 mysql 命令行中运行良好。所以我很确定数据库可以识别 USER 和 PASSWORD。
  • 您的 django 应用似乎没有使用您发布的数据库设置。是否有任何本地设置文件覆盖它?
  • 将 HOST ET PORT 留空,看看会得到什么
  • 使用 Python 的详细模式 (python -v) 并找出 Django 不使用您的设置文件的原因。

标签: python django


【解决方案1】:

您当前的用户似乎没有连接到数据库的权限。 重新安装mysql会有所帮助 还有

'HOST': '', 

'PORT': '', 

将这两个字段留空

【讨论】:

  • 设置文件中的db用户是root,但错误信息是db用户user。这意味着未使用指定的设置。重装 MySQL 甚至与这个问题无关。
  • 我的意思是不允许本地主机连接到 DB Mayb sm 事情在他首先安装 MySQL 时搞砸了
  • 本地主机不是问题。正在使用的用户名是user,它没有使用任何密码进行身份验证。看起来没有使用 db 配置。
  • 我在另一台运行良好的机器上尝试使用相同的代码。 mysql实例一定有问题。但是想知道 mysql -u root -ppersonnel django_personnel 这在同一台机器上工作正常。
  • 正如我提到的 localhost 到 DB 连接的一些问题,您可以在 mysql 安装期间进行 conf 设置时轻松搞砸它。完全删除后尝试重新安装(可能清除删除)
猜你喜欢
  • 2019-04-11
  • 2013-05-07
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 2014-03-15
  • 2016-09-30
相关资源
最近更新 更多