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:找到下载文件并执行导入命令

最终完成效果
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342