25

だから私はこのリソースを通してDjango(1、3、1、'final'、0)を学んでいます:http ://www.djangobook.com/en/2.0/chapter05/

Synaptic経由で「mysql-server」と「python-mysqldb」をインストールしました。settings.pyで関連する設定を変更しました。

上記の本は、manage.pyシェルから実行するように指示しています。

>>> from django.db import connection
>>> cursor = connection.cursor()

これらのコマンドを実行すると、次のエラーが発生します。

OperationalError: (1044, "Access denied for user ''@'localhost' to database 'mydb'")

  Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/django/db/backends/__init__.py", line 250, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/usr/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 322, in _cursor
    self.connection = Database.connect(**kwargs)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (1044, "Access denied for user ''@'localhost' to database 'mydb'")

MySQLは、初めてインストールしたときにrootパスワードを設定するように要求しましたが、それはここで利用されますか?それとも何か他のものですか?

4

8 に答える 8

30

ユーザーにはデータベースへのアクセス権がありません。以下のコマンドを使用して、データベースをセットアップします。

DROP DATABASE IF EXISTS `mydb`;
CREATE DATABASE `mydb`
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE utf8_general_ci;

USE 'mysql';
GRANT ALL PRIVILEGES ON mydb.* TO 'mydb_user'@'localhost' IDENTIFIED BY 'your_password'

WITH GRANT OPTION;
FLUSH PRIVILEGES;

また、それを実行するには十分な権限が必要です。次に、script.sqlとして保存します。

$mysql -u root -p < script.sql

db設定が正しく設定されていることを確認する必要があるsettings.pyよりも

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',                  
        'USER': 'mydb_user',             
        'PASSWORD': 'your_password',                  
        'HOST': '',                     
        'PORT': '',                      
    }
}

python manage.py syncdb

これで完了です。

于 2012-06-23T14:25:14.343 に答える
4

また、テストに関する Django チュートリアル ( https://docs.djangoproject.com/en/dev/intro/tutorial05/ )に従っているときに、この問題に遭遇しました。投票アプリをテストしようとすると、次のエラーが表示されました。

user@host:~/django/mysite$ python manage.py test polls

Creating test database for alias 'default'...
Got an error creating the test database: (1044, "Access denied for user 'admin'@'localhost' to database 'test_django_mysite'")
Type 'yes' if you would like to try deleting the test database 'test_django_mysite', or 'no' to cancel: 

問題は、django が test_django_mysite という一時データベースを作成していることです。
作成しようとしていた test_django_mysite データベースの 'admin'@'localhost' へのアクセスを許可することで、この問題を解決できました。

mysql> GRANT ALL PRIVILEGES ON test_django_mysite.* TO admin@localhost IDENTIFIED BY 'mypassword';
Query OK, 0 rows affected (0.04 sec)

test_django_mysite にのみ権限を付与したことに注意してください。実際に作成する必要はありませんでした。

于 2013-06-03T21:20:24.530 に答える
1

私の問題は、設定をlocal_settings.pyで行う必要があるのに、 settings.pyを編集していたことです。

今、すべてがうまくいくようです。

于 2016-03-04T21:39:22.730 に答える
0

ジャンゴの本は今ではかなり古いです。特に、データベース設定は、djangoブックで説明されている一連の変数ではなく、辞書になりました。

トレースバックの最後の行を見ると、ユーザー名なしで接続しようとしているようです。

変更してみてください

DATABASE_ENGINE = ''
DATABASE_NAME = ''
DATABASE_USER = ''
DATABASE_PASSWORD = ''

DATABASES = {
    'default': {
        'ENGINE': '',
        'NAME': ''
        'USER': ''
        # etc
    }
}
于 2012-06-23T14:13:53.793 に答える
0

データベースのパスワードを変更し、settings.py を更新した場合は、wsgi.py プロセスも再起動する必要があります (たとえば、apache を再起動するなど)。

于 2014-08-18T14:58:51.090 に答える
0

settings.pyファイルでデータベース構成を確認する必要があります。また、db ユーザーがデータベースにアクセスして操作を実行する権限を持っているかどうかも確認する必要があります。

ここに記載されている解決策が有効かどうかを確認してください。

于 2018-10-08T10:18:54.177 に答える
-1

この件で数分(ほぼ1時間)失ったので、ここに私の答えを残します。

コピペに注意してください :) 残念ながら、mysql は、存在しないユーザーの権限を存在しないデータベースに付与する際に成功を返します...

両方のクエリ:

GRANT ALL PRIVILEGES ON python_user.* TO 'python_db'@'%' WITH GRANT OPTION;

と:

GRANT ALL PRIVILEGES ON python_db.* TO 'python_user'@'%' WITH GRANT OPTION

成功を返します。Aldo python_db という名前のユーザーと python_user という名前の db はありません。:) 悲しいね。私の間違いだけでなく、MySql も出力に関して十分に役に立ちませんでした。:)

于 2015-09-01T09:33:02.830 に答える