最近在研究Django,在链接数据库的时候出现了一些小问题,记录在此,给自己做个记录,同时给各位一个参考。
首先说明下,在mac电脑上,用的virtualenv虚拟环境,Django的版本是1.11.3,Python的版本是3.6
问题1:
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")
问题2:
django.db.utils.OperationalError: (1045, "Access denied for user 'test'@'localhost' (using password: YES)")
出现此问题,网上有一堆详解这个问题的原因,具体可以自己搜索。
我的解决办法是:
1.先安装mysql数据库,直接brew安装就行:
brew install mysql
2.启动mysql服务:
mysql.server start
关于怎么设置初始化配置root账户参考:
https://segmentfault.com/q/1010000000475470
3.设置setting.py中的DATABASES:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'TestModel',
'USER': 'test',
'PASSWORD': 'test123',
'HOST': 'localhost',
'PORT': '3306',
}
}
我这里设置的数据库名字:TestModel,用户:test ,密码:test123
4.同时设置数据库的相关参数与setting.py保持一致,具体如下:
进入数据库:
mysql -uroot -p
创建数据库 TestModel的参数
mysql> create database TestModel;
mysql> create user test idenfified by 'test123';
mysql> grant all on TestModel.* to 'test'@'%';
mysql> flush privileges;
5.最后虚拟环境中同步一下:
python3 manage.py migrate
python3 manage.py runserver
出现如下:
System check identified no issues (0 silenced).
July 19, 2017 - 01:53:41
Django version 1.11.3, using settings 'MySetting.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
以上就是我解决上两个问题的思路。
参考链接:https://stackoverflow.com/questions/2443419/django-mysql-1045-access-denied-for-user