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 データ ディレクトリを消去して上記を試してみると、データベースに接続できなくなりました。

ジャンゴは言う—</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;

1 つのデータベースしか表示されません ( information_schema)。

しかし、putty@localhost私はそれらすべてを見ることができます。変。

アップデート

としてログインしてもroot@127.0.0.1、データベースを作成できません。

設定--protocol=TCPすると同じになります。ただし、--protocol=SOCKET問題なく動作します。

4

1 に答える 1

1

localhostMariaDB/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 に答える