MariaDB,Django和127.0.0.1

时间:2013-07-24 09:29:57

标签: mysql django mariadb

我在Django上使用MySQL,一切正常。

这是我的Django数据库配置 -

DATABASES['default'] = {
    'ENGINE': 'django.db.backends.mysql',
    'USER': 'putty',
    'PASSWORD': 'putty',
    'HOST': '127.0.0.1',
    'NAME': 'putty',
}

这就是我在MySQL中用来创建数据库和用户的内容 -

CREATE DATABASE putty CHARACTER SET = 'utf8';
CREATE USER 'putty'@'localhost' IDENTIFIED BY 'putty';
GRANT ALL PRIVILEGES ON putty.* TO 'putty'@'localhost' WITH GRANT OPTION;

然而,当我安装MariaDB时,擦除了我的MySQL数据目录,并尝试了上述操作,我无法再连接到我的数据库。

Django说 -

OperationalError: (1049, "Unknown database 'putty'")

如果我改变我的Django数据库配置 -

    'HOST': 'localhost',

它工作正常(但是,这不可行,因为它不适用于我们的MySQL生产)。

如何强制MariaDB使用127.0.0.1的主机?

我尝试删除用户并使用127.0.0.1的主机重新创建它,但MariaDB不允许我这样做。

更新

putty@127.0.0.1 -

登录
mysql -u putty -h 127.0.0.1 -p
SHOW DATABASES;

我只能看到一个数据库(information_schema)。

然而,作为putty@localhost,我可以看到它们。怪异。

更新

即使以root@127.0.0.1身份登录,我也无法创建数据库。

当我设置--protocol=TCP时,我得到了同样的结果;然而,--protocol=SOCKET事情正常。

1 个答案:

答案 0 :(得分:1)

localhost在MariaDB / MySQL上下文中很特别。它选择UNIX域套接字连接。 127.0.0.1使用TCP / IP连接。它们完全不同。您的权限需要明确说明,因此除了'putty'@'localhost'之外,您还需要包含'putty'@'127.0.0.1'。另请注意,它们是不同的用户,可以具有不同的权限和不同的密码 - 并且它们引用不同的连接方法。

此外,您需要确保MariaDB正在侦听127.0.0.1。这通常是默认设置,但较旧的迁移配置可能仍会在 my.cnf 中设置 skip-networking 。如果已设置,您需要对其进行评论。较新的配置将绑定到本地环回:

bind-address = 127.0.0.1

这应该足以确保它通过127.0.0.1

接受用户(具有正确的权限)