36.部署準(zhǔn)備(二):MySQL

Mysql部署步驟

1. 下載mysql

查找對應(yīng)版本

下面提供了兩種安裝方式,一種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)修改即可

mysql根目錄文件結(jié)構(gòu)
my.ini文件配置
[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)行初始化

使用mysqld.exe進(jìn)行初始化

打開上面文件目錄,并進(jìn)入該目錄的CMD命令窗口,使用mysqld.exemysql進(jìn)行初始化
mysql初始化

mysql初始化有兩種方式:

  • 1.mysql --initialize:直接使用改名了初始化后會隨機生成一個密碼,需要復(fù)制并記住改密碼,以便后面對該隨機生成的復(fù)雜密碼進(jìn)行修改,修改成我們自己能記住的密碼

  • 2.mysqld --initialize-insecure --user=mysql--console:使用該命令進(jìn)行初始化,會將密碼設(shè)置為空,后面再修改即可

注意:

一臺電腦安裝多個版本mysql,安裝名稱服務(wù)區(qū)別

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

3、初始化密碼(mysql3服務(wù)必須先啟動:net start mysql3
初始化登錄密碼

4.安裝以及啟動mysql服務(wù),并進(jìn)入mysql

使用mysql.exe進(jìn)入mysql

- 1.安裝mysql服務(wù):mysqld --install(要以管理員身份運行cmd才行)
- 2.啟動mysql服務(wù):net start mysql
安裝并啟動mysql服務(wù)

- 3.root進(jìn)入mysql數(shù)據(jù)庫:mysql -u root -p
此處我們初始化密碼為空,所以直接回車即可;如果初始化了隨機密碼,此處需要將隨機密碼復(fù)制到此處
進(jìn)入mysql數(shù)據(jù)庫

- 4.修改root用戶密碼
使用mysql其他連接工具也可以修改密碼
修改root用戶密碼為test123456alter user 'root'@'localhost' identified by 'test123456';
修改root用戶密碼為test123456

退出并重新使用新密碼登錄:
退出并使用修改后密碼登錄

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

復(fù)制該目錄

添加至Path系統(tǒng)變量

5.在Django的settings.py配置mysql數(shù)據(jù)庫連接

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

mysql數(shù)據(jù)庫

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

- 2.為ysh的新用戶賦予操作某個庫的權(quán)限
ysh用戶賦予操作mysite_db數(shù)據(jù)庫操作的所有權(quán)限
grant all privileges on mysite_db.* to 'ysh'@'localhost';

為ysh用戶賦予操作mysite_db庫的權(quán)限

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

flush privileges;

刷新權(quán)限并退出使用新用戶登錄

獲得了mysite_db數(shù)據(jù)庫的操作權(quán)限

接著將新用戶和密碼在Djangosettings.py配置即可

6.安裝django的mysql數(shù)據(jù)庫驅(qū)動連接

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

import pymysql
pymysql.install_as_MySQLdb()
pymysql使用

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

根據(jù)自己電腦對應(yīng)python版本以及電腦操作系統(tǒng)

pip install 包名稱

注意:使用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
創(chuàng)建緩存表

4.遷移數(shù)據(jù)
最初使用的是SQLite數(shù)據(jù)庫,所以我們文章博客等信息都存儲在該數(shù)據(jù)庫中,我們改為mysql數(shù)據(jù)庫后,啟動服務(wù)整個項目沒有數(shù)據(jù),所以我們將之前寫好的文章博客遷移到mysql數(shù)據(jù)庫中,我們使用django的導(dǎo)出導(dǎo)入命令

遷移數(shù)據(jù)從SQLite到Mysql

  • 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ù)報錯,可以和上面類似,哪個表有重復(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)行如下操作
步驟1:django官網(wǎng)查詢

步驟2:mysql官網(wǎng)獲取下載地址

步驟3:mysql官網(wǎng)獲取下載鏈接

步驟4:根據(jù)mysql版本下載

步驟5:下載完成導(dǎo)入方法

步驟6:找到下載文件并執(zhí)行導(dǎo)入命令

最終完成效果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容