MySQL學習(1)

簡述MySQL體系結構

Mysql是由SQL接口,解析器,優化器,緩存,存儲引擎組成的
Connectors指的是不同語言中與SQL的交互
Management Serveices & Utilities: 系統管理和控制工具
Connection Pool: 連接池。管理緩沖用戶連接,線程處理等需要緩存的需求
SQL Interface: SQL接口,接受用戶的SQL命令,并且返回用戶需要查詢的結果。比如select from就是調
用SQL Interface
Parser: 解析器。SQL命令傳遞到解析器的時候會被解析器驗證和解析。
Optimizer: 查詢優化器。SQL語句在查詢之前會使用查詢優化器對查詢進行優化。
Cache和Buffer: 查詢緩存。如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取數
據.
Engine :存儲引擎。存儲引擎是MySql中具體的與文件打交道的子系統。

連接層
?(1)提供連接協議:TCP/IP 、SOCKET
?(2)提供驗證:用戶、密碼,IP,SOCKET
?(3)提供專用連接線程:接收用戶SQL,返回結果
?通過以下語句可以查看到連接線程基本情況
?mysql> show processlist;
?SQL層
?(1)接收上層傳送的SQL語句
?(2)語法驗證模塊:驗證語句語法,是否滿足SQL_MODE
?(3)語義檢查:判斷SQL語句的類型
???DDL :數據定義語言
???DCL :數據控制語言
???DML :數據操作語言
???DQL: 數據查詢語言
???...
?(4)權限檢查:用戶對庫表有沒有權限
?(5)解析器:對語句執行前,進行預處理,生成解析樹(執行計劃),說白了就是生成多種執行方案.
?(6)優化器:根據解析器得出的多種執行計劃,進行判斷,選擇最優的執行計劃
? ? ? ? ? 代價模型:資源(CPU IO MEM)的耗損評估性能好壞
?(7)執行器:根據最優執行計劃,執行SQL語句,產生執行結果
? ? ? ? ? 執行結果:在磁盤的xxxx位置上
?(8)提供查詢緩存(默認是沒開啟的),會使用redis tair替代查詢緩存功能
?(9)提供日志記錄(日志管理章節):binlog,默認是沒開啟的。
? ? ? ? ? 存儲引擎層(類似于Linux中的文件系統)負責根據SQL層執行的結果,從磁盤上拿數據。將16進制的磁盤數據,交由SQL結構化化成表,
? ? ? ? ? 連接層的專用線程返回給用戶。

CentOS7??RPM方式安裝MySQL5.7

首先,我們連接上Xshell

事先從官網下載RPM安裝包,上傳至服務器

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相關軟件包。

[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

啟動服務

[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# systemctl enable mysqld

CentOS7??通用二進制方式安裝MySQL5.7

1、下載glibc版本的Mysql

2、新建用戶以安全方式運行進程

[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

注意記錄臨時密碼

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數據文件的存放位置:
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 --添加為系統服務
# chkconfig mysqld on --開機自啟動
systemctl start mysqld

將mysql的bin目錄加入PATH環境變量,編輯/etc/profile文件使用mysql客戶端命令

由于PATH環境變量中沒有添加,所以我們要手動添加

export PATH=$PATH:/usr/local/mysql/bin

現在就可以了

使用mysql客戶端登錄服務器,重置root密碼

沒有密碼時設置:mysqladmin -uroot password '123456'??? 臨時密碼

修改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密碼遺忘:
關閉數據庫, 修改主配置文件(/etc/my.cnf) 添加: skip-grant-tables
啟動數據庫, 空密碼登錄并修改密碼

mysql-> update mysql.userset authentication_string=password('123ABCacz!')

???????? -> whereuser='root'and host='localhost';

mysql> flushprivileges;生效

刪除 skip-grant-tables,重啟數據庫驗證新密碼

?

還有不足,有待完善。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534380.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534380.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL學習(2)

1、使用源碼安裝MySQL 5.7 1、安裝開發工具和開發包 yum install makegcc gcc-c cmake bison-devel ncurses-devel -y yum install libaio libaio-devel openssl-devel -y yum install perl-Data-Dumper -y yum install net-tools -y 2、編譯安裝MySQL 1)解壓 [r…

MySQL學習(3)單表查詢

素材如下: DROP TABLE IF EXISTS course; CREATE TABLE course ( cs_id int(11) NOT NULL COMMENT 課程編號, cs_name varchar(50) NOT NULL COMMENT 課程名稱, cs_credit tinyint(255) unsigned DEFAULT NULL COMMENT 課程學分, cs_type char(12) DEFAULT NULL C…

MySQL學習(4)多表查詢

1.創建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); 創建score表。SQL代碼如下: CRE…

MySQL學習(5)數據庫備份

數據庫備份,數據庫為school,素材如下 1.創建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address …

MySQL(查看數據文件目錄)

show global variables like %datadir%;

mysql在rpm安裝方式下查看隨機生成密碼命令

mysql安裝成功后創建的超級用戶rootlocalhost的密碼會被存儲在/var/log/mysqld.log grep temporary password /var/log/mysqld.log

MySQL(6)視圖

步驟1:創建學生表stu,插入3條記錄。 CREATE TABLE stu ( s_id INT PRIMARY KEY, s_name VARCHAR(20), addr VARCHAR(50), tel VARCHAR(50) ); INSERT INTO stu VALUES(1,XiaoWang,Henan,0371-12345678), (2,XiaoLi,Hebei,13889072345), (3…

MySQL(7)索引

表結構如下: writers表結構 字段名 數據類型 主鍵 外鍵 非空 唯一 自增 w_id SMALLINT(11) 是 否 是 是 是 w_name VARCHAR(255) 否 否 是 否 否 w_address VARCHAR(255) 否 否 否 否 否 w_age CHAR(2) 否 否 是 否 否 w_note VARCHAR(255) 否 否 否 否 否 …

MySQL(8)存儲過程和函數

字段名 數據類型 主鍵 外鍵 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 mysql> create table sch (-> id int primary key not null unique,-> name varchar(5…

MySQL(9)主從復制和讀寫分離

1.理解MySQL主從復制原理。 復制是MySQL提供的一直高可用、高性能的解決方案,一般用來建立大型的應用,總體來說,分為以下三步: (1)master將改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件&#x…

NoSQL(1)

1、簡述redis應用場景。 Redis 概念:Redis(Remote Dictionary Server),即遠程字典服務,是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫。特征: 數據間沒有必然的聯系內部…

NoSQL(2)

1、string list hash結構中,每個至少完成5個命令,包含插入 修改 刪除 查詢,list 和hash還需要增加遍歷的操作命令 1、 Keys相關的命令操作: (1) 查看key是否存在: EXISTS name #判斷該鍵是…

NoSQL(3)

1、什么是MongoDB ? MongoDB 是由C語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下,添加更多的節點,可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為…

Python二級筆記(1)

操作題 1,寬度為30字符,星號字符填充,居中對齊。如果輸入字符串超30位,則全部輸出。 例如:鍵盤輸入字符串q為‘abcd’,屏幕輸出abcd 代碼: s input(請輸入一個字符串:) print({:*^30}.form…

Python二級筆記(2)

知識點: 1,鏈表可以是線性結構也可以是非線性結構 線性表的鏈式存儲結構稱為線性鏈表;鏈表上一種物理存儲單元上非連續,非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的,鏈表可以說…

Python二級筆記(3)

知識點: 1,排序可以在不同的存儲結構上實現,但快速排序法適于順序存儲的線性表,不適用于鏈式存儲的線性表。 堆棧序適用于線性結構,不適用于非線性結構 2,基本路徑測試根據軟件過程性描述中的控制流確定程…

軟件工程學簡述

軟件危機 軟件危機是指計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。(考試中名詞解釋或者選擇題為主) 軟件危機的典型表現 (1)對軟件開發成本和進度的估計常常很不準確。 (2)用戶對“已完成的…

Python二級筆記(4)

知識點&#xff1a; 1&#xff0c;冒泡排序、快速排序、簡單插入排序、簡單選擇排序在最壞情況下比較次數均為n(n-1)/2&#xff0c;堆排序在最壞情況下比較次數為nlog(2↓)n,在最壞情況下希爾排序需要比較的次數是n(↑r)&#xff08;1<r<2&#xff09;。 2&#xff0c;…

Python二級筆記(5)

知識點&#xff1a; 1&#xff0c;樹的度&#xff0c;及樹中存在的最大度數&#xff1b;如樹的度為3&#xff0c;即樹中只存在度為0&#xff0c;1&#xff0c;2&#xff0c;3的結點。 2&#xff0c;設循環隊列的存儲空間為Q&#xff08;1:m&#xff09;,初始狀態為空。在循環…

Qt圖形界面編程入門(1)

一、類和對象 1&#xff0c;面向過程程序設計&#xff08;自頂向下設計&#xff09; 分析出解決問題所需的步驟&#xff0c;然后用函數把這些步驟一一實現&#xff0c;使用的時候一個一個調用 過程式設計對于比較復雜的問題&#xff0c;或是在開發中需求變化比較多的時候&am…