1. 下载mysql
下面提供了两种安装方式,一种msi,一种zip压缩文件解压安装
mysql下载地址:https://dev.mysql.com/downloads/mysql/
2.新建my.ini
文件并进行配置,在mysql
文件夹根目录新建data
目录
新建data
目录:mysql数据库的数据的存放目录
将下载的压缩包,解压后放到电脑合适位置,并在里面手动新建一个my.ini
文件,将下面内容复制进去并做相应修改即可
[mysqld]
# 设置mysql的安装目录
basedir=C:/mysql-8.0.11-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:/mysql-8.0.11-winx64/data
# 设置默认使用的端口
port=3306
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人试图攻击数据库
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则使用的字符集
collation-server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件作为认证加密方式
# MySQL8.0默认认证加密方式为caching_sha2_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
port=3306
3.对mysql进行初始化
打开上面文件目录,并进入该目录的
CMD命令窗口
,使用mysqld.exe
对mysql
进行初始化mysql初始化有两种方式:
1.
mysql --initialize
:直接使用改名了初始化后会随机生成一个密码,需要复制并记住改密码,以便后面对该随机生成的复杂密码进行修改,修改成我们自己能记住的密码2.
mysqld --initialize-insecure --user=mysql--console
:使用该命令进行初始化,会将密码设置为空,后面再修改即可
注意:
1、
mysqld3 --initialize-insecure --user=mysql3--console
:使用该命令进行初始化,会将密码设置为空,后面再修改即可2、安装mysql服务:
mysqld3 --install mysql3
**(要以管理员身份运行cmd才行)3、初始化密码(mysql3服务必须先启动:
net start mysql3
)4.安装以及启动mysql服务,并进入mysql
- 1.安装mysql服务:
mysqld --install
(要以管理员身份运行cmd才行)- 2.启动mysql服务:
net start mysql
- 3.
root
进入mysql数据库:mysql -u root -p
此处我们初始化密码为空,所以直接回车即可;如果初始化了随机密码,此处需要将随机密码复制到此处
- 4.修改
root
用户密码使用mysql其他连接工具也可以修改密码
修改
root
用户密码为test123456
:alter user 'root'@'localhost' identified by 'test123456';
退出并重新使用新密码登录:
- 5.将mysql添加系统变量Path中
5.在Django的settings.py
配置mysql数据库连接
具体数据库连接可以访问官方文档:https://docs.djangoproject.com/en/2.0/ref/settings/#databases
但是在实际应用中,root权限为超级用户,直接将超级用户放出去有风险,所以,处于安全考虑,我们设置一个非root权限用户,只拥有我们该项目所使用的数据库权限即可
- 1.创建一个
ysh
的新用户创建
ysh
用户并将密码设置为ysh123456
:create user 'ysh'@'localhost' identified by 'ysh123456';
- 2.为ysh
的新用户赋予操作某个库的权限
给ysh
用户赋予操作mysite_db
数据库操作的所有权限
grant all privileges on mysite_db.* to 'ysh'@'localhost';
添加完成权限后,还需要刷新权限并退出使用新用户登录
flush privileges;
接着将新用户和密码在
Django
的settings.py
配置即可
6.安装django的mysql数据库驱动连接
这块有两种方式,分别使用不同的mysql数据库驱动包:
1.使用pip install pymysql
安装pymysql
包,并在settings.py
同级目录下的__init__.py
文件添加如下内容即可实现django
与mysql
数据库的连接
import pymysql
pymysql.install_as_MySQLdb()
2.使用pip install mysqlclient
安装mysqlclient
包,安装成功就ok,如果安装不成功,就通过下面网址,根据python版本去下载驱动包,手动进行安装
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
注意:使用
pip install 包名称
的时候,包存放路径一定要找对
下面的内容是原本使用sqlite3
数据库,后面再迁移到mysql
数据库操作,如果项目开始就使用mysql数据库,请忽略
3.安装完成后同步数据到mysql数据库
python manage.py makemigrations
因为迁移的表都存在,所以直接同步到数据库即可
再启动服务器,打开网站:
python manage.py runserver
发现报错,缺少我们之前使用的缓存表
我们再创建一次缓存表即可:使用下面命令
python manage.py createcachetable
4.迁移数据
最初使用的是SQLite
数据库,所以我们文章博客等信息都存储在该数据库中,我们改为mysql
数据库后,启动服务整个项目没有数据,所以我们将之前写好的文章博客迁移到mysql
数据库中,我们使用django的导出导入命令
-
1.首先换回之前的
sqlite3
数据库,将存储在里面的文章博客等数据导出
使用python manage.py dumpdata > data.json
命令导出数据到data.json
-
2.换回
mysql
数据库,并将导出的data.json
数据进行导入
使用python manage.py loaddata data.json
命令导入数据
但是执行导入命令,报错,是因为有重复名称
删除后,如果还有重复报错,可以和上面类似,哪个表有重复删除即可
经过上面操作,我们已经ok了,可以正常启动服务并登陆网站
- 3.时区问题
时区问题导致文章归档没有数据,我们可以将时区设置False进行关闭,也可以进行如下操作