【问题标题】:Django is ignoring database connection in settings.pyDjango 忽略 settings.py 中的数据库连接
【发布时间】:2020-11-25 11:26:31
【问题描述】:

我正在尝试在运行 ubuntu 20.04 的 VPS 中部署 django 应用程序。

我的设置.py

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
  'OPTIONS': {
  'read_default_file':'/home/ubuntu/arainc/auth/mysql.cnf'
  },
 }
}

以及配置文件:

#mysql.cnf
[client]
database = 'dbname'
user = 'dbuser'
password = 'dbuser@123'
default-character-set = 'utf8'

在尝试访问该站点时,我收到以下错误:

Environment:


Request Method: GET
Request URL: http://208.115.109.194/

Django Version: 3.0.7
Python Version: 3.8.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'araincdb',
 'import_export',
 'crispy_forms',
 'django_filters',
 'widget_tweaks']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback (most recent call last):
  File "/home/ubuntu/arainc/venv/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 199, in _get_session
    return self._session_cache

During handling of the above exception ('SessionStore' object has no attribute '_session_cache'), another exception occurred:
  File "/home/ubuntu/arainc/venv/lib/python3.8/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
    self.connect()
  File "/home/ubuntu/arainc/venv/lib/python3.8/site-packages/django/db/backends/base/base.py", line 197, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/home/ubuntu/arainc/venv/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "/home/ubuntu/arainc/venv/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 233, in get_new_connection
    return Database.connect(**conn_params)
  File "/home/ubuntu/arainc/venv/lib/python3.8/site-packages/MySQLdb/__init__.py", line 130, in Connect
    return Connection(*args, **kwargs)
  File "/home/ubuntu/arainc/venv/lib/python3.8/site-packages/MySQLdb/connections.py", line 185, in __init__
    super().__init__(*args, **kwargs2)

Exception Type: OperationalError at /
Exception Value: (1045, "Access denied for user 'www-data'@'localhost' (using password: NO)")

我可以使用配置文件中的凭据登录数据库。

我该如何解决这个问题?任何帮助将不胜感激。

【问题讨论】:

  • 我认为 django 无法读取路径,'read_default_file':'/home/ubuntu/arainc/auth/mysql.cnf',您能否进一步了解定义路径,只是一个建议。

标签: mysql django django-deployment


【解决方案1】:

my.cnf 文件是全局可写的。

我通过应用以下 chmod 命令将配置文件的文件权限更改为只读。

将 cnf 文件设为只读

chmod 0444 my.cnf

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 2017-04-12
    • 2015-08-17
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2019-09-25
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多