MySQL学习(1)
簡(jiǎn)述MySQL體系結(jié)構(gòu)
Mysql是由SQL接口,解析器,優(yōu)化器,緩存,存儲(chǔ)引擎組成的
Connectors指的是不同語言中與SQL的交互
Management Serveices & Utilities: 系統(tǒng)管理和控制工具
Connection Pool: 連接池。管理緩沖用戶連接,線程處理等需要緩存的需求
SQL Interface: SQL接口,接受用戶的SQL命令,并且返回用戶需要查詢的結(jié)果。比如select from就是調(diào)
用SQL Interface
Parser: 解析器。SQL命令傳遞到解析器的時(shí)候會(huì)被解析器驗(yàn)證和解析。
Optimizer: 查詢優(yōu)化器。SQL語句在查詢之前會(huì)使用查詢優(yōu)化器對(duì)查詢進(jìn)行優(yōu)化。
Cache和Buffer: 查詢緩存。如果查詢緩存有命中的查詢結(jié)果,查詢語句就可以直接去查詢緩存中取數(shù)
據(jù).
Engine :存儲(chǔ)引擎。存儲(chǔ)引擎是MySql中具體的與文件打交道的子系統(tǒng)。
連接層
?(1)提供連接協(xié)議:TCP/IP 、SOCKET
?(2)提供驗(yàn)證:用戶、密碼,IP,SOCKET
?(3)提供專用連接線程:接收用戶SQL,返回結(jié)果
?通過以下語句可以查看到連接線程基本情況
?mysql> show processlist;
?SQL層
?(1)接收上層傳送的SQL語句
?(2)語法驗(yàn)證模塊:驗(yàn)證語句語法,是否滿足SQL_MODE
?(3)語義檢查:判斷SQL語句的類型
???DDL :數(shù)據(jù)定義語言
???DCL :數(shù)據(jù)控制語言
???DML :數(shù)據(jù)操作語言
???DQL: 數(shù)據(jù)查詢語言
???...
?(4)權(quán)限檢查:用戶對(duì)庫表有沒有權(quán)限
?(5)解析器:對(duì)語句執(zhí)行前,進(jìn)行預(yù)處理,生成解析樹(執(zhí)行計(jì)劃),說白了就是生成多種執(zhí)行方案.
?(6)優(yōu)化器:根據(jù)解析器得出的多種執(zhí)行計(jì)劃,進(jìn)行判斷,選擇最優(yōu)的執(zhí)行計(jì)劃
? ? ? ? ? 代價(jià)模型:資源(CPU IO MEM)的耗損評(píng)估性能好壞
?(7)執(zhí)行器:根據(jù)最優(yōu)執(zhí)行計(jì)劃,執(zhí)行SQL語句,產(chǎn)生執(zhí)行結(jié)果
? ? ? ? ? 執(zhí)行結(jié)果:在磁盤的xxxx位置上
?(8)提供查詢緩存(默認(rèn)是沒開啟的),會(huì)使用redis tair替代查詢緩存功能
?(9)提供日志記錄(日志管理章節(jié)):binlog,默認(rèn)是沒開啟的。
? ? ? ? ? 存儲(chǔ)引擎層(類似于Linux中的文件系統(tǒng))負(fù)責(zé)根據(jù)SQL層執(zhí)行的結(jié)果,從磁盤上拿數(shù)據(jù)。將16進(jìn)制的磁盤數(shù)據(jù),交由SQL結(jié)構(gòu)化化成表,
? ? ? ? ? 連接層的專用線程返回給用戶。
CentOS7??RPM方式安裝MySQL5.7
首先,我們連接上Xshell
事先從官網(wǎng)下載RPM安裝包,上傳至服務(wù)器
ls -l mysql-5.7.14-1.el7.x86_64.rpm-bundle.tar
解壓查看:
tar xf mysql-5.7.14-1.el7.x86_64.rpm-bundle.tar
ls -l mysql-community*
安裝:
首先限制mariadb相關(guān)軟件包。
[root@localhost ~]# yum remove mariadb-libs
[root@localhost ~]# rpm -ivh mysql-community-client-5.7.14-1.el7.x86_64.rpm
mysql-community-common-5.7.14-1.el7.x86_64.rpm mysql-community-libs-5.7.14-1.el7.x86_64.rpm ?mysql-community-server-5.7.14-1.el7.x86_64.rpm
啟動(dòng)服務(wù)
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# systemctl enable mysqld
CentOS7??通用二進(jìn)制方式安裝MySQL5.7
1、下載glibc版本的Mysql
2、新建用戶以安全方式運(yùn)行進(jìn)程
[root@localhost local]# groupadd -r -g 27 mysql
[root@localhost local]# useradd -r -u 27 -g 27 -c 'MySQL Server' -s /bin/false mysql
3、安裝并初始化mysql
[root@localhost ~]# tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz
[root@localhost local]#ln -sv mysql-5.7.14-linux-glibc2.5-x86_64 mysql
"mysql" -> "mysql-5.7.14-linux-glibc2.5-x86_64"
[root@localhost local]# chown -R mysql.mysql mysql/*
[root@localhost local]#mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意記錄臨時(shí)密碼
2021-01-13T08:16:44.223972Z 1 [Note] A temporary password is generated for root@localhost: Sb8-se>k%Ick
[root@localhost local]#cd /usr/local/mysql
[root@localhost mysql]# \cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
添加如下行指定mysql數(shù)據(jù)文件的存放位置:
datadir = /usr/local/mysql/data
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld --添加為系統(tǒng)服務(wù)
# chkconfig mysqld on --開機(jī)自啟動(dòng)
systemctl start mysqld
將mysql的bin目錄加入PATH環(huán)境變量,編輯/etc/profile文件使用mysql客戶端命令
由于PATH環(huán)境變量中沒有添加,所以我們要手動(dòng)添加
export PATH=$PATH:/usr/local/mysql/bin
現(xiàn)在就可以了
使用mysql客戶端登錄服務(wù)器,重置root密碼
沒有密碼時(shí)設(shè)置:mysqladmin -uroot password '123456'??? 臨時(shí)密碼
修改root密碼:
方法1:mysqladmin -uroot -p'123456' password
方法2:ALTER USER root@localhost identified by '123456';
方法3:mysql> update mysql.user set authentication_string=password('123456')
?-> where user='root' and host='localhost';
mysql> flush privileges;生效
root密碼遺忘:
關(guān)閉數(shù)據(jù)庫, 修改主配置文件(/etc/my.cnf) 添加: skip-grant-tables
啟動(dòng)數(shù)據(jù)庫, 空密碼登錄并修改密碼
mysql-> update mysql.userset authentication_string=password('123ABCacz!')
???????? -> whereuser='root'and host='localhost';
mysql> flushprivileges;生效
刪除 skip-grant-tables,重啟數(shù)據(jù)庫驗(yàn)證新密碼
?
還有不足,有待完善。
總結(jié)
以上是生活随笔為你收集整理的MySQL学习(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统看硬盘信息失败怎么办 如何检查硬盘信
- 下一篇: 影响索引的mysql函数_mysql索引