2010-03-14 160 views
18

我有整个安装工作​​了几个月我的本地计算机上
我安装在远程站点上现在
创建一个新的MySQL数据库,并创建了一个。新用户(指 “someUser”),并把它完整的补助,像这样 -Django的:mysql的:1045,“访问被拒绝的用户

GRANT ALL PRIVILEGES ON TO 'SomeUser的' @ 'localhost' 的IDENTIFIED BY WITH GRANT OPTION 'somepassword';

我已同步数据库,我们“python manage.py syncdb”并创建了正确的表。 我的settings.py拥有这个相同的用户。

但是当我尝试通过应用程序登录用户,并且它击中DB,我看到在日志下面 -

(1045,“访问被拒绝的用户‘SomeUser的’@'本地主机'(使用密码:YES)“)

我登录过的MySQL(安装在同一个盒子作为Django的),并检查了赠款和它正确地显示 -

资助SomeUser的@本地
授予*上的所有特权。 * TO 'SomeUser的' @ 'localhost' 的IDENTIFIED BY PASSWORD '* thesaltedpasswordOverHere' WITH GRANT OPTION

我不想使用root用户/密码Django的,因为似乎是正确的方式,它不会。

关于什么可能是错误的任何指针?

+0

你还记得你是否有这个工作? – theblang 2014-02-08 05:13:43

回答

22

我做这样一个名为foo_db数据库:

create database foo_db; 
create user foo_user identified by 'foo_password'; 
grant all on foo_db.* to 'foo_user'@'%'; 
flush privileges; 
+0

谢谢,帮助!我认为原因是我先创建了用户,然后是数据库。这很奇怪,'当你看到授权时,它说你有权访问*。*这是误导。它应该适用于该实例之后创建的任何内容。 – PlanetUnknown 2010-03-14 19:37:54

+0

我其实正在尝试做PlanetUnknown做的同样的事情。我遵循你的方法,但我仍然得到同样的错误。 – theblang 2014-02-08 05:13:24

0

@ mattblang:

在这种情况下,它帮助,如果主机在实际使用settings.py文件中设置了。

对我来说这是/etc/graphite/local_settings.py其中DATABASES Stanzas有一个错误的值,HOST有: 'HOST': '127.0.0.1',

由于执行syncdb命令它搜索本地主机的运行时,我改成了 'HOST': 'localhost',

现在看起来像这样:

DATABASES = { 
    'default': { 
     'NAME': 'graphite', 
     'ENGINE': 'django.db.backends.mysql', 
     'USER': 'graphite', 
     'PASSWORD': 'thepasswordyouchoose', 
     'HOST': 'localhost', 
     'PORT': '3306' 
    } 
} 

...现在是syncdb命令python manage.py syncdb成功运行。

5

在我的情况下的设置。PY有以下几点:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'TRYDJANGO', 
     'USERNAME':'user_trydjango', 
     'PASSWORD':'passtry', 
     'PORT':'3306', 
     'HOST': 'localhost', 
    } 
} 

而且它的工作原理,如果我改变 '用户名' 到 '用户':

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'TRYDJANGO', 
     'USER':'user_trydjango', 
     'PASSWORD':'passtry', 
     'PORT':'3306', 
     'HOST': 'localhost', 
    } 
} 
0

也改变了端口号“3307'if的MySQL-python的64位在settings.py中,然后只有在Windows和MySql 5.7 django中发生的连接。

'3306' 的MySQL-python的32位

DATABASES = { 
    'default': { 
     'NAME': 'graphite', 
     'ENGINE': 'django.db.backends.mysql', 
     'USER': 'graphite', 
     'PASSWORD': 'thepasswordyouchoose', 
     'HOST': 'localhost', 
     'PORT': '3307' 
    } 
} 
0

指的@duffymo的答案,改变了最后的陈述可能为我工作。

create database foo_db; 
create user foo_user identified by 'foo_password'; 
grant all on foo_db.* to [email protected] identified by 'foo_password' with grant option; 
0

据我了解someuser是一个数据库访客用户,而不是管理员,对吗?

如果是这样,从你的MySQL数据库管理员用户,授予SomeUser的访问MySQL的环境表 'mysql.user' 如下:

GRANT SELECT ON mysqluser TO'someuser'@'%';

对我来说它的工作, 伊万

0

我用这个配置,和它的作品。

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
    'OPTIONS': { 
     'read_default_file': '/etc/my.cnf', 
    }, 
     #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 
0

似乎所有我做的是:

  1. 将我的数据库
  2. 删除用户
  3. 重新创建用户
  4. 重新创建数据库
  5. 授予此用户,刷新权限

然后它开始工作。

+0

感谢您花时间提供答案。这是因为像你这样有帮助的同伴,我们可以一起学习社区。这里有一些关于如何让你的答案很好的技巧:[我如何写出一个好答案](https://stackoverflow.com/help/how-to-answer)。 – Brien 2018-02-22 02:30:05