Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django和MySQL,无法获得连接数据库的访问权限错误:1045_Python_Mysql_Django_Connector - Fatal编程技术网

Python Django和MySQL,无法获得连接数据库的访问权限错误:1045

Python Django和MySQL,无法获得连接数据库的访问权限错误:1045,python,mysql,django,connector,Python,Mysql,Django,Connector,你好,我正在和几个人一起做一个项目。我们正在使用django 1.9 my mysql,有人将django设置为与mysql连接,然后为我们其他人编写了连接python与mysql所需下载内容的说明。我正确安装了mysql,但在访问数据库时遇到问题。假设我们都有访问数据库的权限,但我不断收到django.DB.utils.OperationalError:(1045,“拒绝用户'django'@'localhost(使用密码:YES)”的访问)即使我只是在终端中键入mysql,我也会收到错误10

你好,我正在和几个人一起做一个项目。我们正在使用django 1.9 my mysql,有人将django设置为与mysql连接,然后为我们其他人编写了连接python与mysql所需下载内容的说明。我正确安装了mysql,但在访问数据库时遇到问题。假设我们都有访问数据库的权限,但我不断收到
django.DB.utils.OperationalError:(1045,“拒绝用户'django'@'localhost(使用密码:YES)”的访问)
即使我只是在终端中键入mysql,我也会收到
错误1045(28000):拒绝用户'stevenJing'@'localhost(使用密码:否)的访问
并键入
mysql-u root-p
我得到
错误1045(28000):用户'root'@'localhost'的访问被拒绝(使用密码:YES)
。我不确定我需要做什么来修复这个问题,因为我甚至不能做
python3 manage.py runserver
,因为我遇到了一个很大的错误,这就是

    Performing system checks...

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x10434a510>
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/base/base.py", line 171, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 264, in get_new_connection
    conn = Database.connect(**conn_params)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQLdb/connections.py", line 204, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'django'@'localhost' (using password: YES)")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/utils/autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 116, in inner_run
    self.check(display_num_errors=True)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/management/base.py", line 426, in check
    include_deployment_checks=include_deployment_checks,
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/checks/registry.py", line 75, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/checks/model_checks.py", line 28, in check_all_models
    errors.extend(model.check(**kwargs))
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/base.py", line 1178, in check
    errors.extend(cls._check_fields(**kwargs))
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/base.py", line 1255, in _check_fields
    errors.extend(field.check(**kwargs))
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 925, in check
    errors = super(AutoField, self).check(**kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 208, in check
    errors.extend(self._check_backend_specific_checks(**kwargs))
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 317, in _check_backend_specific_checks
    return connections[db].validation.check_field(self, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/mysql/validation.py", line 18, in check_field
    field_type = field.db_type(connection)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/models/fields/__init__.py", line 625, in db_type
    return connection.data_types[self.get_internal_type()] % data
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/__init__.py", line 36, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/utils/functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 184, in data_types
    if self.features.supports_microsecond_precision:
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/utils/functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/mysql/features.py", line 53, in supports_microsecond_precision
    return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/utils/functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 359, in mysql_version
    with self.temporary_connection():
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/contextlib.py", line 59, in __enter__
    return next(self.gen)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/base/base.py", line 564, in temporary_connection
    cursor = self.cursor()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/base/base.py", line 231, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/base/base.py", line 204, in _cursor
    self.ensure_connection()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/utils.py", line 95, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/base/base.py", line 171, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 264, in get_new_connection
    conn = Database.connect(**conn_params)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQLdb/connections.py", line 204, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
django.db.utils.OperationalError: (1045, "Access denied for user 'django'@'localhost' (using password: YES)")

设置数据库的人是MySQL的新手,我也是,如果有人从我们的git repo中提取或克隆数据,他们可以访问数据库,我们怎么能做到这一点呢。

如果有人提取您的代码,而您希望他们访问您的数据库,那么他们可能不应该使用“localhost”如果在本地主机上运行时也出现此错误,则这是权限问题

首先要做的是查看是否可以使用命令行MySQL或其他MySQL客户端使用这些凭据登录

我经常(不幸地)遇到此类错误,这通常是因为我没有在MySQL中正确添加用户。我注意到,仅仅放置“%”并不代表localhost,在授予用户权限时,我通常必须在“user”@“%”之外添加“user”@“localhost”

编辑:为了授予特权,您需要以root用户身份登录mysql,通常使用如下方式:

% mysql -u root -P mysql
“-p”表示您必须提供root/admin密码,最后一个“mysql”是要使用的模式。显然,您需要管理员访问权限才能做到这一点

然后,在较新版本的MySQL中,首先创建用户:

> create user  'stevenJing'@'localhost' identified by 'password';
这实际上是一个与“stevenJing”@“%”不同的用户,因此,如果要同时从本地主机和远程主机进行连接,则实际上需要同时从这两个主机进行连接

然后您需要向该用户授予特权:

> grant all privileges on <schema>.* to 'stevenJing'@'localhost';
>将.*上的所有权限授予“stevenJing”@“localhost”;
其中模式显然是您的Django模式(上面Django设置中的项目)。此外,当然,要授予该用户从其他位置登录的权限,请执行以下操作:

> grant all privileges on <schema>.* to 'stevenJing'@'%';
>将。*上的所有权限授予“stevenJing”@“%”;

如果人们正在提取您的代码,而您希望他们访问您的数据库,那么他们可能不应该使用“localhost”。如果您在本地主机上运行时也遇到此错误,则这是权限问题

首先要做的是查看是否可以使用命令行MySQL或其他MySQL客户端使用这些凭据登录

我经常(不幸地)遇到此类错误,这通常是因为我没有在MySQL中正确添加用户。我注意到,仅仅放置“%”并不代表localhost,在授予用户权限时,我通常必须在“user”@“%”之外添加“user”@“localhost”

编辑:为了授予特权,您需要以root用户身份登录mysql,通常使用如下方式:

% mysql -u root -P mysql
“-p”表示您必须提供root/admin密码,最后一个“mysql”是要使用的模式。显然,您需要管理员访问权限才能做到这一点

然后,在较新版本的MySQL中,首先创建用户:

> create user  'stevenJing'@'localhost' identified by 'password';
这实际上是一个与“stevenJing”@“%”不同的用户,因此,如果要同时从本地主机和远程主机进行连接,则实际上需要同时从这两个主机进行连接

然后您需要向该用户授予特权:

> grant all privileges on <schema>.* to 'stevenJing'@'localhost';
>将.*上的所有权限授予“stevenJing”@“localhost”;
其中模式显然是您的Django模式(上面Django设置中的项目)。此外,当然,要授予该用户从其他位置登录的权限,请执行以下操作:

> grant all privileges on <schema>.* to 'stevenJing'@'%';
>将。*上的所有权限授予“stevenJing”@“%”;
Mysql特权 此错误是因为
django
用户无权访问
lolProject
数据库。您可以使用命令来纠正这一点。django用户需要很多特权,因为它需要在迁移过程中创建和删除表,所以像这样的事情应该可以做到

GRANT ALL ON lolproject.* TO 'django'@'localhost';
更新:通常通过打开mysql控制台作为
mysql-u root
来实现,其中root是默认安装的帐户,通常没有与之关联的密码

现在,如果每个人的计算机上都有一个mysql服务器,这就可以了。如果每个人都连接到同一台计算机,它应该是

GRANT ALL ON lolproject.* TO 'django'@'%';
由于从您的回购中提取的每个人都需要访问权限,因此您应该在
settings.py

Sqlite 您考虑过使用sqlite吗?它几乎不需要安装,每个从您的repo克隆或提取的人都可以获得当前数据库的副本(如果它已添加到repo中)。

Mysql特权 此错误是因为
django
用户无权访问
lolProject
数据库。您可以使用命令来纠正这一点。django用户需要很多特权,因为它需要在迁移过程中创建和删除表,所以像这样的事情应该可以做到

GRANT ALL ON lolproject.* TO 'django'@'localhost';
更新:通常通过打开mysql控制台作为
mysql-u root
来实现,其中root是默认安装的帐户,通常没有与之关联的密码

现在,如果每个人的计算机上都有一个mysql服务器,这就可以了。如果每个人都连接到同一台计算机,它应该是