是的,这是 Stack Overflow 中的一个常见问题,但我的问题有点不同!
我在Digital Ocean上有一个服务器。 操作系统:Ubuntu 18.04
我尝试使用 mysql 在 apache 服务器 上托管我的 django 项目。
我已经完成了第一部分,但问题是集成mysql。我已经安装了mysql和mysqlclient。我的mysql中有一个带有密码的用户root。我已经创建了一个数据库并授予了以下权限。
GRANT ALL PRIVILEGES ON urp_test.* TO 'root'@'localhost' identified by 'password_for_root';
我配置了我的 settings.py 文件。这是db部分:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'urp_test',
'USER': 'root',
'PASSWORD': 'password_for_the_db',
'HOST': 'localhost',
'PORT': '3306',
}
}
然后我做了一个python manage.py makemigrations
、python manage.py migrate
、python manage.py createsuperuser
。
所有这些都已成功执行。因此,当我从 admin 模块登录时,我看到错误:
OperationalError at /admin/login/ (1698, "Access denied for user 'root'@'localhost'")
我尝试删除数据库并执行相同的操作几次,但出现同样的问题。
编辑:
如果我从终端使用相同的用户名和密码登录,即如下所示:
mysql -u root -p
使用密码,我可以访问数据库。
正如我之前提到的,python manage.py createsuperuser
确实创建了一个用户,我可以从数据库表中获取该用户。
问题是当我尝试从浏览器的 admin
部分登录该用户时,即如下所示:
W.X.Y.Z:80/admin/login
我收到了上述错误。这里 W.X.Y.Z
是我的 DigitalOcean 服务器的 IP
所以,这肯定仍然是一个权限错误,不是吗?
- 如何解决此错误?
- 我还计划为我的普通用户开发一个注册模块。 如果他们注册,他们可以获得此权限吗? 他们可以访问数据库吗?
最佳答案
在 root
用户下打开 db
会有些复杂。详情可查看here
我做了什么:
以 root 用户身份登录 mysql
mysql> mysql -u root -p
创建了一个新用户
mysql> 创建由“密码”标识的用户“newuser”@“localhost”;
mysql> 授予 * 上的所有权限。 * TO 'newuser'@'localhost';
mysql>刷新权限;
mysql>退出
然后我以新用户身份登录
mysql -u newuser -p
并输入我之前设置的用于创建此用户的新密码
。
然后我创建了
db
:创建数据库 my_database_name
关于python -/admin/login/(1698, "Access denied for user ' root'@'localhost'") 出现操作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863173/