
1. 下載mysql

下面提供了兩種安裝方式,一種msi,一種zip壓縮文件解壓安裝
mysql下載地址:https://dev.mysql.com/downloads/mysql/


2.新建my.ini文件并進(jìn)行配置,在mysql文件夾根目錄新建data目錄
新建data目錄:mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
將下載的壓縮包,解壓后放到電腦合適位置,并在里面手動新建一個my.ini文件,將下面內(nèi)容復(fù)制進(jìn)去并做相應(yīng)修改即可


[mysqld]
# 設(shè)置mysql的安裝目錄
basedir=C:/mysql-8.0.11-winx64
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
datadir=C:/mysql-8.0.11-winx64/data
# 設(shè)置默認(rèn)使用的端口
port=3306
# 允許最大連接數(shù)
max_connections=200
# 允許連接失敗的次數(shù)。這是為了防止有人試圖攻擊數(shù)據(jù)庫
max_connect_errors=10
# 服務(wù)端使用的字符集
character-set-server=utf8mb4
# 數(shù)據(jù)庫字符集對應(yīng)一些排序等規(guī)則使用的字符集
collation-server=utf8mb4_general_ci
# 創(chuàng)建新表時將使用的默認(rèn)存儲引擎
default-storage-engine=INNODB
# 默認(rèn)使用“mysql_native_password”插件作為認(rèn)證加密方式
# MySQL8.0默認(rèn)認(rèn)證加密方式為caching_sha2_password
default_authentication_plugin=mysql_native_password
[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
port=3306
3.對mysql進(jìn)行初始化

打開上面文件目錄,并進(jìn)入該目錄的
CMD命令窗口,使用mysqld.exe對mysql進(jìn)行初始化
mysql初始化有兩種方式:
1.
mysql --initialize:直接使用改名了初始化后會隨機生成一個密碼,需要復(fù)制并記住改密碼,以便后面對該隨機生成的復(fù)雜密碼進(jìn)行修改,修改成我們自己能記住的密碼2.
mysqld --initialize-insecure --user=mysql--console:使用該命令進(jìn)行初始化,會將密碼設(shè)置為空,后面再修改即可
注意:

1、
mysqld3 --initialize-insecure --user=mysql3--console:使用該命令進(jìn)行初始化,會將密碼設(shè)置為空,后面再修改即可2、安裝mysql服務(wù):
mysqld3 --install mysql3**(要以管理員身份運行cmd才行)
3、初始化密碼(mysql3服務(wù)必須先啟動:
net start mysql3)
4.安裝以及啟動mysql服務(wù),并進(jìn)入mysql

- 1.安裝mysql服務(wù):
mysqld --install(要以管理員身份運行cmd才行)- 2.啟動mysql服務(wù):
net start mysql
- 3.
root進(jìn)入mysql數(shù)據(jù)庫:mysql -u root -p此處我們初始化密碼為空,所以直接回車即可;如果初始化了隨機密碼,此處需要將隨機密碼復(fù)制到此處

- 4.修改
root用戶密碼使用mysql其他連接工具也可以修改密碼
修改
root用戶密碼為test123456:alter user 'root'@'localhost' identified by 'test123456';
退出并重新使用新密碼登錄:

- 5.將mysql添加系統(tǒng)變量Path中


5.在Django的settings.py配置mysql數(shù)據(jù)庫連接
具體數(shù)據(jù)庫連接可以訪問官方文檔:https://docs.djangoproject.com/en/2.0/ref/settings/#databases

但是在實際應(yīng)用中,root權(quán)限為超級用戶,直接將超級用戶放出去有風(fēng)險,所以,處于安全考慮,我們設(shè)置一個非root權(quán)限用戶,只擁有我們該項目所使用的數(shù)據(jù)庫權(quán)限即可
- 1.創(chuàng)建一個
ysh的新用戶創(chuàng)建
ysh用戶并將密碼設(shè)置為ysh123456:create user 'ysh'@'localhost' identified by 'ysh123456';
- 2.為ysh的新用戶賦予操作某個庫的權(quán)限
給ysh用戶賦予操作mysite_db數(shù)據(jù)庫操作的所有權(quán)限
grant all privileges on mysite_db.* to 'ysh'@'localhost';

添加完成權(quán)限后,還需要刷新權(quán)限并退出使用新用戶登錄
flush privileges;


接著將新用戶和密碼在
Django的settings.py配置即可
6.安裝django的mysql數(shù)據(jù)庫驅(qū)動連接
這塊有兩種方式,分別使用不同的mysql數(shù)據(jù)庫驅(qū)動包:
1.使用pip install pymysql安裝pymysql包,并在settings.py同級目錄下的__init__.py文件添加如下內(nèi)容即可實現(xiàn)django與mysql數(shù)據(jù)庫的連接
import pymysql
pymysql.install_as_MySQLdb()

2.使用pip install mysqlclient安裝mysqlclient包,安裝成功就ok,如果安裝不成功,就通過下面網(wǎng)址,根據(jù)python版本去下載驅(qū)動包,手動進(jìn)行安裝
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient


注意:使用
pip install 包名稱的時候,包存放路徑一定要找對
下面的內(nèi)容是原本使用sqlite3數(shù)據(jù)庫,后面再遷移到mysql數(shù)據(jù)庫操作,如果項目開始就使用mysql數(shù)據(jù)庫,請忽略
3.安裝完成后同步數(shù)據(jù)到mysql數(shù)據(jù)庫
python manage.py makemigrations因為遷移的表都存在,所以直接同步到數(shù)據(jù)庫即可
再啟動服務(wù)器,打開網(wǎng)站:
python manage.py runserver
發(fā)現(xiàn)報錯,缺少我們之前使用的緩存表

我們再創(chuàng)建一次緩存表即可:使用下面命令
python manage.py createcachetable
4.遷移數(shù)據(jù)
最初使用的是SQLite數(shù)據(jù)庫,所以我們文章博客等信息都存儲在該數(shù)據(jù)庫中,我們改為mysql數(shù)據(jù)庫后,啟動服務(wù)整個項目沒有數(shù)據(jù),所以我們將之前寫好的文章博客遷移到mysql數(shù)據(jù)庫中,我們使用django的導(dǎo)出導(dǎo)入命令

-
1.首先換回之前的
sqlite3數(shù)據(jù)庫,將存儲在里面的文章博客等數(shù)據(jù)導(dǎo)出
換回sqlite3數(shù)據(jù)庫導(dǎo)出之前數(shù)據(jù)
使用python manage.py dumpdata > data.json命令導(dǎo)出數(shù)據(jù)到data.json
導(dǎo)出sqlite3數(shù)據(jù) -
2.換回
mysql數(shù)據(jù)庫,并將導(dǎo)出的data.json數(shù)據(jù)進(jìn)行導(dǎo)入
使用python manage.py loaddata data.json命令導(dǎo)入數(shù)據(jù)
進(jìn)行數(shù)據(jù)導(dǎo)入mysql
但是執(zhí)行導(dǎo)入命令,報錯,是因為有重復(fù)名稱
報錯信息


刪除后,如果還有重復(fù)報錯,可以和上面類似,哪個表有重復(fù)刪除即可
經(jīng)過上面操作,我們已經(jīng)ok了,可以正常啟動服務(wù)并登陸網(wǎng)站
- 3.時區(qū)問題
時區(qū)問題導(dǎo)致文章歸檔沒有數(shù)據(jù),我們可以將時區(qū)設(shè)置False進(jìn)行關(guān)閉,也可以進(jìn)行如下操作










