36.部署准备(二):MySQL

Mysql部署步骤

1. 下载mysql

查找对应版本

下面提供了两种安装方式,一种msi,一种zip压缩文件解压安装
mysql下载地址:https://dev.mysql.com/downloads/mysql/
下载安装文件

点击下载即可

2.新建my.ini文件并进行配置,在mysql文件夹根目录新建data目录

新建data目录:mysql数据库的数据的存放目录
将下载的压缩包,解压后放到电脑合适位置,并在里面手动新建一个my.ini文件,将下面内容复制进去并做相应修改即可

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进行初始化

使用mysqld.exe进行初始化

打开上面文件目录,并进入该目录的CMD命令窗口,使用mysqld.exemysql进行初始化
mysql初始化

mysql初始化有两种方式:

  • 1.mysql --initialize:直接使用改名了初始化后会随机生成一个密码,需要复制并记住改密码,以便后面对该随机生成的复杂密码进行修改,修改成我们自己能记住的密码

  • 2.mysqld --initialize-insecure --user=mysql--console:使用该命令进行初始化,会将密码设置为空,后面再修改即可

注意:

一台电脑安装多个版本mysql,安装名称服务区别

1、mysqld3 --initialize-insecure --user=mysql3--console:使用该命令进行初始化,会将密码设置为空,后面再修改即可
2、安装mysql服务:mysqld3 --install mysql3**(要以管理员身份运行cmd才行)
安装服务

3、初始化密码(mysql3服务必须先启动:net start mysql3
初始化登录密码

4.安装以及启动mysql服务,并进入mysql

使用mysql.exe进入mysql

- 1.安装mysql服务:mysqld --install(要以管理员身份运行cmd才行)
- 2.启动mysql服务:net start mysql
安装并启动mysql服务

- 3.root进入mysql数据库:mysql -u root -p
此处我们初始化密码为空,所以直接回车即可;如果初始化了随机密码,此处需要将随机密码复制到此处
进入mysql数据库

- 4.修改root用户密码
使用mysql其他连接工具也可以修改密码
修改root用户密码为test123456alter user 'root'@'localhost' identified by 'test123456';
修改root用户密码为test123456

退出并重新使用新密码登录:
退出并使用修改后密码登录

- 5.将mysql添加系统变量Path中

复制该目录

添加至Path系统变量

5.在Django的settings.py配置mysql数据库连接

具体数据库连接可以访问官方文档:https://docs.djangoproject.com/en/2.0/ref/settings/#databases

mysql数据库

但是在实际应用中,root权限为超级用户,直接将超级用户放出去有风险,所以,处于安全考虑,我们设置一个非root权限用户,只拥有我们该项目所使用的数据库权限即可
- 1.创建一个ysh的新用户
创建ysh用户并将密码设置为ysh123456create user 'ysh'@'localhost' identified by 'ysh123456';
创建用户

- 2.为ysh的新用户赋予操作某个库的权限
ysh用户赋予操作mysite_db数据库操作的所有权限
grant all privileges on mysite_db.* to 'ysh'@'localhost';

为ysh用户赋予操作mysite_db库的权限

添加完成权限后,还需要刷新权限并退出使用新用户登录

flush privileges;

刷新权限并退出使用新用户登录

获得了mysite_db数据库的操作权限

接着将新用户和密码在Djangosettings.py配置即可

6.安装django的mysql数据库驱动连接

这块有两种方式,分别使用不同的mysql数据库驱动包:
1.使用pip install pymysql安装pymysql包,并在settings.py同级目录下的__init__.py文件添加如下内容即可实现djangomysql数据库的连接

import pymysql
pymysql.install_as_MySQLdb()
pymysql使用

2.使用pip install mysqlclient安装mysqlclient包,安装成功就ok,如果安装不成功,就通过下面网址,根据python版本去下载驱动包,手动进行安装
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

根据自己电脑对应python版本以及电脑操作系统

pip install 包名称

注意:使用pip install 包名称的时候,包存放路径一定要找对



下面的内容是原本使用sqlite3数据库,后面再迁移到mysql数据库操作,如果项目开始就使用mysql数据库,请忽略
3.安装完成后同步数据到mysql数据库
python manage.py makemigrations因为迁移的表都存在,所以直接同步到数据库即可

再启动服务器,打开网站:
python manage.py runserver
发现报错,缺少我们之前使用的缓存表

缺少之前使用缓存表

我们再创建一次缓存表即可:使用下面命令
python manage.py createcachetable
创建缓存表

4.迁移数据
最初使用的是SQLite数据库,所以我们文章博客等信息都存储在该数据库中,我们改为mysql数据库后,启动服务整个项目没有数据,所以我们将之前写好的文章博客迁移到mysql数据库中,我们使用django的导出导入命令

迁移数据从SQLite到Mysql

  • 1.首先换回之前的sqlite3数据库,将存储在里面的文章博客等数据导出

    换回sqlite3数据库导出之前数据

    使用python manage.py dumpdata > data.json命令导出数据到data.json
    导出sqlite3数据

  • 2.换回mysql数据库,并将导出的data.json数据进行导入
    使用python manage.py loaddata data.json命令导入数据

    进行数据导入mysql

    但是执行导入命令,报错,是因为有重复名称
    报错信息

删除重复表

最后删除上面报错没有被删除的表

删除后,如果还有重复报错,可以和上面类似,哪个表有重复删除即可
经过上面操作,我们已经ok了,可以正常启动服务并登陆网站

  • 3.时区问题
    时区问题导致文章归档没有数据,我们可以将时区设置False进行关闭,也可以进行如下操作
步骤1:django官网查询

步骤2:mysql官网获取下载地址

步骤3:mysql官网获取下载链接

步骤4:根据mysql版本下载

步骤5:下载完成导入方法

步骤6:找到下载文件并执行导入命令

最终完成效果

你可能感兴趣的:(36.部署准备(二):MySQL)