【问题标题】:MariaDB, Django, and 127.0.0.1MariaDB、Django 和 127.0.0.1
【发布时间】:2013-07-23 16:47:36
【问题描述】:

我在 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 一切正常。

【问题讨论】:

    标签: mysql django mariadb


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 2013-04-18
      • 1970-01-01
      相关资源
      最近更新 更多