欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何在django中使用mysql数据库进行操作?

程序员文章站 2022-10-26 21:50:36
背景介绍 mysql在生产环境中是非常常用的一种关系型数据库,性能好,开源。 而python的django框架在开发环境下自带了sqlite数据库,虽然测试很方便,但是在部署时,最好更换成...

背景介绍

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;

之后我的问题就真的解决了


希望我的踩坑经历可以对广大读者有所帮助,如果有错误,还请大佬们留言指出。