2

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

这是我的 Django 数据库配置——</p>

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

下面是我在 MySQL 中运行以创建数据库和用户的内容——</p>

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 说——</p>

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

如果我这样更改我的 Django 数据库配置——</p>

    'HOST': 'localhost',

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

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

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

更新

以身份登录putty@127.0.0.1——</p>

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

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

但是,正如putty@localhost我所看到的那样。诡异的。

更新

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

当我设置时,--protocol=TCP我得到了同样的结果;但是--protocol=SOCKET一切正常。

4

1 回答 1

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 接受用户(具有正确的权限)

于 2015-03-13T01:44:13.550 回答