如何在django中使用mysql数据库进行操作?
背景介绍
mysql在生产环境中是非常常用的一种关系型数据库,性能好,开源。
而python的django框架在开发环境下自带了sqlite数据库,虽然测试很方便,但是在部署时,最好更换成mysql数据库。
在部署django的mysql时,踩了一个坑,而且解答也不是很完善,所以记录一下自己的配置过程。
部署使用的服务器是阿里云ecs云服务器,配置是2核4G,1M带宽。
python manage.py makemigrations python magage.py migrate python manage.py runserver
如果不报错,就说明自己的配置正确了。
遇到的坑
在配置完成后,执行
python manage.py makemigrations 后
报错如下:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
意思就是django 想要连接 mysql中对应的数据库时,连接被拒绝。
原因可能是 settings.py里面的用户名,密码填错了,可能是数据库里没有对应名称的database.
但是我试着按照配置里信息手动连接mysql,可以连接。说明我的原因不是这些。
后来查了许多,才看到一个真的work for me 的 解答
是 stack overflow上的。
我来翻译一下,就是
debian和ubuntu系统安装mysql ,连接root用户时使用的登录认证是UNIX auth_socket plugin
而django连接数据库时使用的是 mysql_native_password 的认证方式,
所以需要修改root的plugin为mysql_native_password
命令如下:
mysql> USE mysql; mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit;
之后我的问题就真的解决了
希望我的踩坑经历可以对广大读者有所帮助,如果有错误,还请大佬们留言指出。
上一篇: mysql如何实现自动获取目标数据库的数据来作为备份机?
下一篇: [20181107][模拟赛]
推荐阅读
-
如何在django中使用mysql数据库进行操作?
-
Django使用echarts进行可视化展示(mysql数据库)
-
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
-
MySQL数据库实际操作如何在提示符下进行
-
MySQL数据库实际操作如何在提示符下进行
-
Django基础篇-使用shell操作Mysql数据库表
-
mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)_MySQL
-
python中关于django对数据库Mysql的增删改查操作详解
-
如何在django中使用mysql数据库进行操作?
-
【MySQL 05】使用Java对MySQL进行操作(创建数据库)