我的配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'dbname', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '123123', # Not used with sqlite3.
'HOST': '127.0.0.1', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306',
'OPTIONS': {
'init_command': 'SET storage_engine=InnoDB',
'charset' : 'utf8mb4',
'use_unicode' : True,
},
},
}
连接正常。
当我将PASSWORD更改为错误密码时,会显示:
File "/Users/fluke/pyenv/lib/python2.7/site-packages/MySQLdb/connections.py", line 193, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
当我将HOST更改为无效值时,如" 127.0.0.123"同时保持正确的密码。它显示:
OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.123' (60)")
这意味着django确实使用了我设置的值。但为什么它报告" localhost"而不是" 127.0.0.1" ?
答案 0 :(得分:0)
通常localhost和127.0.0.1是可以互换的,它们通常意味着相同的东西。此错误看起来表明Django能够联系MySQL服务器,但它无法进行身份验证。
我建议创建一个单独的MySQL用户来使用此应用程序。可以在here找到执行此操作的说明:
然后,在配置中使用这些凭据。像这样:
'NAME': 'dbname', # Or path to database file if using sqlite3.
'USER': 'NewUserName', # Not used with sqlite3.
'PASSWORD': 'NewPassword', # Not used with sqlite3.
'HOST': '127.0.0.1', # Set to empty string for localhost. Not