1.數(shù)據(jù)庫介紹
1.1 數(shù)據(jù)是什么?
咱們認(rèn)為:
賬號(hào)密碼千绪、圖片充易、視頻、數(shù)據(jù)荸型、特殊符號(hào)蔽氨、文字、彈窗
計(jì)算機(jī):
二進(jìn)制數(shù)據(jù)
1.2 數(shù)據(jù)如何存儲(chǔ)?
賬號(hào)密碼該怎么存儲(chǔ)
安全
存儲(chǔ)限制
1.3 數(shù)據(jù)庫管理系統(tǒng)(軟件)DBMS? database management system
wordpress --->帖子鹉究,圖片,留言踪宠,評(píng)論自赔,用戶密碼等
https://db-engines.com/en/ranking 查看數(shù)據(jù)庫種類
RDBMS 關(guān)系型數(shù)據(jù)庫? relational
oracle
mysql
mssql
pg
IBM DB2
nosql 非關(guān)系型數(shù)據(jù)庫
MongoDB
redis
云數(shù)據(jù)庫RDS PolarDB? TDsql?
Newsql
TiDB
2.mysql 產(chǎn)品線
2.1 mysql廠家
oracle? 官方
MariaDB?
Percona
2.2 oracle mysql 企業(yè)版本選擇
5.6 ****? :5.6.36,5.6.38柳琢,5.6.46(GA 6-12月)
5.7 ***** :5.7.20绍妨,5.7.22,5.7.26柬脸,5.7.28? ? 雙數(shù)版
8.0 **? ? 8.0.11以后的版本 8.0.17他去,8.0.18
C:社區(qū)版,開源
E:企業(yè)版倒堕,收費(fèi)
mysql.com 官網(wǎng)下載
2.3 Mysql各種安裝方式(Linux)
通用二進(jìn)制版:解壓即用
rpm灾测,yum版本:下載rpm包或者配置yum源 (自己研究)
APT是Ubuntu使用
源碼包 :編譯安裝 (自己研究)
編譯安裝苫费,需要研究源碼時(shí)用這種安裝
3. 安裝mysql 5.7.28二進(jìn)制包
3.1 環(huán)境準(zhǔn)備
(1)準(zhǔn)備centos 7.6虛擬機(jī)
ip:10.0.0.51/24???? hostname:db01(自己定制的)
(2)清理歷史環(huán)境
rpm -qa |grep mariadb
yum remove mariadb -libs? -y
進(jìn)行刪除
(3)創(chuàng)建用戶和組
useradd mysql? -s /sbin/nologin
id mysql
(4)創(chuàng)建相關(guān)目錄
創(chuàng)建軟件目錄???????? 國際標(biāo)準(zhǔn)是/user/local/
mkdir -p /app/database/
創(chuàng)建數(shù)據(jù)目錄(掛接到磁盤)
mkdir -p /dada/3306/
創(chuàng)建日志目錄
mkdir -p /binlog/3306/
軟件一個(gè)磁盤肄程,數(shù)據(jù)一個(gè)磁盤,日志一個(gè)磁盤
(5)設(shè)置權(quán)限
chown -R mysql.mysql /app/ /data/ /binlog
3.2 上傳并解壓mysql軟件
使用xftp上傳
cd /app/database
ll
3.3 設(shè)置環(huán)境變量
bin目錄下放mysql所有執(zhí)行程序骤宣,比如一些命令
support-files 放的一些腳本
這兩個(gè)常用
vim /etc/profile
#添加一行:
export PATH=/app/database/mysql/bin:$PATH?????? #告訴系統(tǒng)找mysql命令時(shí)去這里找
#生效配置
source /etc/profile
#驗(yàn)證
mysql -V
3.4 初始化系統(tǒng)
mysql --initialize -insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306/
?
#報(bào)錯(cuò)
#解決??
安裝一個(gè)軟件包
#再次運(yùn)行
mysql --initialize -insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306/
容易報(bào)錯(cuò)的
刪除3306下的所有文件
#擴(kuò)展
???????? 5.7版本初始化方式
(1)mysqld --initialize
???????? 1.初始化完成后秦爆,會(huì)有12位臨時(shí)密碼,但是必須在使用mysql之前重置這個(gè)密碼
???????? 2.密碼管理使用嚴(yán)格模式:3種密碼復(fù)雜度
(2)mysqld --initialize-insecure
??????????? 5.6版本初始化方式?
/app/database/mysql/scripts/mysql_install_db --user=mysql --basedir=/app/database/mysql --datadir=/data/3306/
如果是yum安裝憔披,會(huì)做自動(dòng)初始化
3.5 配置文件設(shè)置
cat >/etc/my.chf <<EOF
[mysqld]
user=mysql
basedir=/app/database/mysql
datadri=/dada/3306
server_id=6
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
EOF
3.6 準(zhǔn)備mysql的啟動(dòng)腳本
#拷貝mysql的啟動(dòng)腳本至系統(tǒng)軟件管理目錄中
centos6 啟動(dòng)
service mysqld start
centos7 啟動(dòng)
chkconfig --add mysqld
?systemctl start mysqld
修改初始密碼
4.mysql體系結(jié)構(gòu)及基礎(chǔ)管理
?C/S工作
ssh連接
本地連接SSH
mysql類似ssh,也是可以本地連接芬膝,或通過客戶端連接
4.1 mysql 客戶端/服務(wù)器工作模型(C/S)
(1)本地socket 鏈接方式:
mysql -S /tmp/mysql.sock
說明:只能在本地使用望门,不依賴于IP和端口
(2)遠(yuǎn)程TCPIP鏈接方式
mysql -uroot -p123 -h 10.0.0.51 -p 3306?????? 通過這個(gè)連接串在本地模擬遠(yuǎn)程登錄
4.2 服務(wù)器端:實(shí)例(server端)
關(guān)掉office之后從內(nèi)存釋放了
office即開即用,mysqld進(jìn)程一直是守護(hù)運(yùn)行的
不關(guān)永遠(yuǎn)在內(nèi)存中運(yùn)行
守護(hù)運(yùn)行蔗候,啟動(dòng)時(shí)就分配好的預(yù)分配內(nèi)存怒允,其他程序無法共享使用,獨(dú)占
有很多線程
實(shí)例:mysqld+工作線程+預(yù)分配的內(nèi)存結(jié)構(gòu)
功能:管理數(shù)據(jù)
公司:boss+員工+辦公室
4.3 mysqld的程序結(jié)構(gòu)
最核心的mysqld? 啟動(dòng)之后就有了實(shí)例
多伽一個(gè)锈遥,開一個(gè)線程
4.4 Mysql的邏輯結(jié)構(gòu)(操作對(duì)象)
邏輯 -->抽象
show tables
desc user
4.5 Mysql的物理存儲(chǔ)結(jié)構(gòu)
段:一個(gè)表就是一個(gè)段纫事,可以由一個(gè)或者多個(gè)區(qū)構(gòu)成
區(qū):一個(gè)區(qū)(簇),默認(rèn)1M,連續(xù)的64個(gè)pages
頁:一個(gè)頁所灸,默認(rèn)16KB丽惶,連續(xù)的4個(gè)OS block,最小的IO單元