【问题标题】:Django syncdb: access deniedDjango syncdb:访问被拒绝
【发布时间】:2015-03-12 11:58:17
【问题描述】:

我是 Django 和 MySQL 的新手,我正在尝试继续由以前的开发人员编写的项目。

我刚刚完成了 MySQL 的全新安装(未设置任何密码)。当我运行python manage.py syncdb 时,我得到了错误:

python manage.py syncdb
/home/home/.virtualenvs/sorrento/local/lib/python2.7/site-packages/debug_toolbar/settings.py:134: DeprecationWarning: INTERCEPT_REDIRECTS is deprecated. Please use the DISABLE_PANELS config in theDEBUG_TOOLBAR_CONFIG setting.
  "DEBUG_TOOLBAR_CONFIG setting.", DeprecationWarning)

OperationalError: (1045, "Access denied for user 'home'@'localhost' (using password: NO)")

这是settings.py中的数据库配置:

########## DATABASE CONFIGURATION
# See: https://docs.djangoproject.com/en/dev/ref/settings/#databases
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '',
        'USER': '',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '',
    }
}
########## END DATABASE CONFIGURATION

既然NAME 是空的,这是否意味着没有建立数据库?我需要从以前的开发人员那里获取数据库转储吗?还是我还缺少其他东西?

【问题讨论】:

    标签: python mysql django


    【解决方案1】:

    这表明您没有编辑数据库的权限。为了能够连接,您需要数据库的 NAME 以及 USERPASSWORD 才能连接。

    【讨论】:

    • 也就是说,我需要从之前的开发者那里得到NAME、USER和PASSWORD?没有其他方法可以得到这些吗?
    • @bard 是的,您将需要这些。或者创建自己的数据库。
    • 是的,如果有一个已经在工作的 webapp,那么必须有一个配置文件来指定它们。如果没有,如果你有root访问权限,你可以尝试以root身份访问mysql来检查现有的用户和数据库。检查this post第二个答案。
    【解决方案2】:

    您不需要从以前的开发人员那里获取数据库的副本,除非您确实需要那里的任何数据。

    你有一个全新的 MySQL 安装,所以你只需要创建一个(空的)数据库。

    首先,编辑您的数据库设置,使 USER 属性为“root”,而 NAME 属性为相关名称(可能是您的项目名称)。

    然后,从 shell 执行 mysql -u root 然后 CREATE DATABASE <dbname> 其中 dbname 是您在上面使用的名称。

    现在你应该可以运行syncdb了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-19
      • 2020-07-29
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 2021-03-06
      相关资源
      最近更新 更多