MySQL數(shù)據(jù)庫安裝
目錄
一、概述
(一)什么是數(shù)據(jù)庫
(二)數(shù)據(jù)庫能干什么
? ? 1、企業(yè)應(yīng)用
? ? 2、金融行業(yè)
? ? 3、電子商務(wù)
? ? 4、社交媒體
? ? 5、物聯(lián)網(wǎng)
(三)為什么要用數(shù)據(jù)庫,優(yōu)勢、特性?
? ? 1、可靠性和穩(wěn)定性
? ? 2、數(shù)據(jù)管理能力
? ? 3、數(shù)據(jù)共享和集成
? ? 4、數(shù)據(jù)安全性和隱私保護(hù)
? ? 5、減少數(shù)據(jù)冗余
二、數(shù)據(jù)庫類型
(一)關(guān)系型數(shù)據(jù)庫,RDBMS
? ? 1、概述
? ? 2、特點(diǎn)
? ? ? ? 2.1、便于查詢和操作
? ? ? ? 2.2、結(jié)構(gòu)化數(shù)據(jù)
? ? ? ? 2.3、數(shù)據(jù)的一致性和完整性
? ? ? ? 2.4、并發(fā)性
? ? 3、代表產(chǎn)品
? ? ? ? 3.1、MySQL
? ? ? ? 3.2、PostgreSQL
(二)非關(guān)系型數(shù)據(jù)庫,NoSQL
? ? 1、概述
? ? 2、特點(diǎn)
? ? ? ? 2.1、非結(jié)構(gòu)化數(shù)據(jù)
? ? ? ? 2.2、分布式存儲(chǔ)
? ? ? ? 2.3、沒有固定的規(guī)范模式
? ? ? ? 2.4、高可伸縮性
? ? ? ? 2.5、高性能
? ? 3、代表產(chǎn)品
? ? ? ? 3.1、MongoDB
? ? ? ? 3.2、Redis
三、數(shù)據(jù)庫模型
(一)層次型數(shù)據(jù)庫模型
(二)網(wǎng)狀型數(shù)據(jù)庫模型
(三)關(guān)系型數(shù)據(jù)庫模型
(四)非關(guān)系型模型
四、MySQL安裝
(一)yum/rpm安裝
? ? 1、下載安裝包
? ? 2、安裝數(shù)據(jù)庫服務(wù)
? ? 3、問題解決
? ? ? ? 3.1、安裝mysql提示公鑰未安裝
? ? ? ? ? ? ? ? 3.1.1、安裝新的密鑰然后再安裝服務(wù)
? ? ? ? ? ? ? ? 3.1.2、不使用GPG密鑰驗(yàn)證
? ? ? ? 3.2、登錄數(shù)據(jù)庫時(shí)提示密碼錯(cuò)誤
? ? 4、直接yum安裝mariadb
? ? 5、查看數(shù)據(jù)庫的命令
? ? 6、創(chuàng)建數(shù)據(jù)庫的命令
? ? 7、進(jìn)入數(shù)據(jù)庫的命令
? ? 8、查看數(shù)據(jù)表的命令
? ? 9、創(chuàng)建表格的命令
? ? 10、刪除表格的命令
? ? 11、檢索數(shù)據(jù)
? ? 12、?查看表格信息
? ? 13、 編輯表格數(shù)據(jù)
? ? 14、檢索記錄
? ? 15、查詢語句
? ? 16、查詢語句
(二)源碼編譯安裝
五、MySQL登錄
? ? 1、本地登錄
? ? 2、借助軟件登錄
六、MySQL配置
(一)數(shù)據(jù)庫目錄結(jié)構(gòu)
(二)主配置文件詳解
? ? 1、/etc/my.cnf
? ? 2、拓展配置項(xiàng)
一、概述
(一)什么是數(shù)據(jù)庫
? ? 數(shù)據(jù)庫(Database)是用來存儲(chǔ)和管理大量結(jié)構(gòu)化數(shù)據(jù)的集合。它是一個(gè)有組織的數(shù)據(jù)集合,可以通過特定的方式進(jìn)行存儲(chǔ)、檢索、更新和管理數(shù)據(jù)。將大量數(shù)據(jù)保存起來,通過計(jì)算機(jī)加工而成的可以進(jìn)行高效訪問的數(shù)據(jù)集合
? ? ? ? 例如:銀行存款的信息;電話薄
? ? 數(shù)據(jù)庫主要用于在計(jì)算機(jī)系統(tǒng)中持久地存儲(chǔ)大量有組織的數(shù)據(jù),并提供靈活的數(shù)據(jù)訪問和管理功能。它通過使用表、行和列的結(jié)構(gòu)來組織和存儲(chǔ)數(shù)據(jù),并提供了查詢語言(如SQL)和其他工具來操作和處理這些數(shù)據(jù)。
? ? 數(shù)據(jù)庫是存儲(chǔ)、管理和操作組織化數(shù)據(jù)的軟件系統(tǒng)
(二)數(shù)據(jù)庫能干什么
? ? 1、企業(yè)應(yīng)用
? ? ? ? 存放用戶數(shù)據(jù)、管理企業(yè)數(shù)據(jù)
? ? 2、金融行業(yè)
? ? ? ? 存儲(chǔ)分析客戶的財(cái)務(wù)數(shù)據(jù)
? ? 3、電子商務(wù)
? ? ? ? 存儲(chǔ)產(chǎn)品信息、訂單信息等
? ? 4、社交媒體
? ? ? ? 存儲(chǔ)社交消息數(shù)據(jù)
? ? 5、物聯(lián)網(wǎng)
? ? ? ? 物聯(lián)網(wǎng)設(shè)備在云服務(wù)平臺(tái)的數(shù)據(jù)存儲(chǔ)
(三)為什么要用數(shù)據(jù)庫,優(yōu)勢、特性?
? ? 1、可靠性和穩(wěn)定性
? ? ? ? 現(xiàn)代數(shù)據(jù)庫系統(tǒng)通常具有高度可靠性和穩(wěn)定性,可以提供持久性和容錯(cuò)性,可以確保企業(yè)的數(shù)據(jù)安全性。
? ? 2、數(shù)據(jù)管理能力
? ? ? ? 數(shù)據(jù)庫系統(tǒng)提供了一種強(qiáng)大的方式來管理數(shù)據(jù),從數(shù)據(jù)的存儲(chǔ)到訪問都進(jìn)行統(tǒng)一的管理。企業(yè)可以更好地跟蹤、管理和報(bào)告數(shù)據(jù),從而使工作更加高效。
? ? 3、數(shù)據(jù)共享和集成
? ? ? ? 企業(yè)常常需要從不同的部門和應(yīng)用程序中收集信息和數(shù)據(jù)。通過使用數(shù)據(jù)庫,這些數(shù)據(jù)可以集成在一起,使企業(yè)更容易理解業(yè)務(wù)、做出決策。
? ? 4、數(shù)據(jù)安全性和隱私保護(hù)
? ? ? ? 企業(yè)往往會(huì)處理大量的機(jī)密數(shù)據(jù),如個(gè)人信息、財(cái)務(wù)信息、業(yè)務(wù)數(shù)據(jù)等等。數(shù)據(jù)庫管理系統(tǒng)可以提供安全的訪問控制和數(shù)據(jù)保護(hù)功能,保護(hù)數(shù)據(jù)的隱私性和機(jī)密性。
? ? 5、減少數(shù)據(jù)冗余
? ? ? ? 數(shù)據(jù)庫技術(shù)可以幫助企業(yè)減少數(shù)據(jù)冗余和重復(fù),提高數(shù)據(jù)的一致性、準(zhǔn)確性和可重用性。
二、數(shù)據(jù)庫類型
(一)關(guān)系型數(shù)據(jù)庫,RDBMS
? ? 1、概述
? ? ? ? 關(guān)系型數(shù)據(jù)庫是一種使用表格來展示和管理數(shù)據(jù)的數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫的核心是數(shù)據(jù)之間的關(guān)系,因此也叫做“關(guān)系數(shù)據(jù)庫”。RDBMS可以讓用戶很容易地使用和管理這些關(guān)系
? ? 2、特點(diǎn)
? ? ? ? 2.1、便于查詢和操作
? ? ? ? ? ? SQL語句
? ? ? ? 2.2、結(jié)構(gòu)化數(shù)據(jù)
? ? ? ? ? ? 使用行和列存放數(shù)據(jù)
? ? ? ? 2.3、數(shù)據(jù)的一致性和完整性
? ? ? ? ? ? 各種約束條件
? ? ? ? 2.4、并發(fā)性
? ? ? ? ? ? 支持多用戶連接的隔離性
? ? 3、代表產(chǎn)品
? ? ? ? 3.1、MySQL
? ? ? ? ? ? 瑞典MYSQL AB公司開發(fā),現(xiàn)由甲骨文公司管理
? ? ? ? 3.2、PostgreSQL
? ? ? ? ? ? PostgreSQL全球開發(fā)組開發(fā)的免費(fèi)的開源的數(shù)據(jù)庫管理系統(tǒng)
(二)非關(guān)系型數(shù)據(jù)庫,NoSQL
? ? 1、概述
? ? ? ? NoSQL(Not only SQL)是一種非關(guān)系型數(shù)據(jù)庫模型,其數(shù)據(jù)存儲(chǔ)和查詢機(jī)制與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫不同
? ? 2、特點(diǎn)
? ? ? ? 2.1、非結(jié)構(gòu)化數(shù)據(jù)
? ? ? ? ? ? 文本、圖像、媒體等
? ? ? ? 2.2、分布式存儲(chǔ)
? ? ? ? ? ? 分布在多個(gè)節(jié)點(diǎn)中,實(shí)現(xiàn)高并發(fā)
? ? ? ? 2.3、沒有固定的規(guī)范模式
? ? ? ? ? ? 無需定義表和列,不強(qiáng)制要求結(jié)構(gòu)
? ? ? ? 2.4、高可伸縮性
? ? ? ? ? ? 支持水平擴(kuò)展,增加或刪除節(jié)點(diǎn)
? ? ? ? 2.5、高性能
? ? ? ? ? ? 高速讀寫操作,比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫效率要高
? ? 3、代表產(chǎn)品
? ? ? ? 3.1、MongoDB
? ? ? ? ? ? 一款基于文檔存儲(chǔ)模型的非關(guān)系型數(shù)據(jù)庫軟件
? ? ? ? 3.2、Redis
? ? ? ? ? ? 一款基于內(nèi)存存儲(chǔ)的非關(guān)系型數(shù)據(jù)庫,與MongoDB一樣廣泛應(yīng)用于互聯(lián)網(wǎng)領(lǐng)域, Redis常用于快速讀寫操作、緩存等場景
三、數(shù)據(jù)庫模型
(一)層次型數(shù)據(jù)庫模型
? ? 1966年,IBM研究員Codd提出層次結(jié)構(gòu)模型
? ? 它的數(shù)據(jù)結(jié)構(gòu)如同樹狀結(jié)構(gòu)。每個(gè)節(jié)點(diǎn)都只有一個(gè)父節(jié)點(diǎn),但可以有多個(gè)子節(jié)點(diǎn)
? ? 這種模型存在層次結(jié)構(gòu)復(fù)雜、擴(kuò)展性差、數(shù)據(jù)操作限制等問題
(二)網(wǎng)狀型數(shù)據(jù)庫模型
? ? 1969年,CODASYL工作組發(fā)布了網(wǎng)絡(luò)模型
? ? 它使用復(fù)雜鏈表來表示數(shù)據(jù)之間的關(guān)系,并增加了數(shù)據(jù)結(jié)構(gòu)的靈活性和遞歸處理能力,從而解決了層次結(jié)構(gòu)模型的一些問題
? ? 解決了層次結(jié)構(gòu)模型的一些問題。但是網(wǎng)絡(luò)模型需要了解復(fù)雜的物理存儲(chǔ)結(jié)構(gòu),對程序設(shè)計(jì)人員的要求比較高
(三)關(guān)系型數(shù)據(jù)庫模型
? ? 1970年,Codd提出了關(guān)系型模型,也就是目前SQL和RDBMS所采用的模型
? ? 關(guān)系型模型基于二維表格的結(jié)構(gòu)組織數(shù)據(jù),每個(gè)表格稱為關(guān)系,每行記錄代表一個(gè)實(shí)體,每列記錄代表一個(gè)屬性。關(guān)系之間通過主鍵和外鍵進(jìn)行關(guān)聯(lián)
? ? 它具有數(shù)據(jù)結(jié)構(gòu)簡單、數(shù)據(jù)組織規(guī)范、數(shù)據(jù)操作強(qiáng)大、數(shù)據(jù)完整性可控等優(yōu)點(diǎn),是目前應(yīng)用最廣泛的數(shù)據(jù)庫模型
(四)非關(guān)系型模型
? ? 非關(guān)系型數(shù)據(jù)庫模型的主要特點(diǎn)是靈活性和可擴(kuò)展性。它們可以處理不同類型和格式的數(shù)據(jù),包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。非關(guān)系型數(shù)據(jù)庫還可以根據(jù)需要進(jìn)行水平擴(kuò)展,以支持大規(guī)模的數(shù)據(jù)存儲(chǔ)和處理。
? ? 非關(guān)系型數(shù)據(jù)庫模型適用于許多應(yīng)用場景,包括大數(shù)據(jù)、實(shí)時(shí)數(shù)據(jù)分析、實(shí)時(shí)推薦系統(tǒng)等。常見的非關(guān)系型數(shù)據(jù)庫包括 Redis、MongoDB、Cassandra、HBase等。
四、MySQL安裝
(一)yum/rpm安裝
? ? 1、下載安裝包
wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
? ? 2、安裝數(shù)據(jù)庫服務(wù)
? ? ? ?rpm安裝下載好的軟件包
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
?? ? ? ?yum安裝軟件包
yum install -y mysql-server
? ? 3、問題解決
? ? ? ? 3.1、安裝mysql提示公鑰未安裝
? ? ? ? ? ? 提示信息
? ? ? ? ? ? ? ? mysql-community-common-5.7.42-1.el7.x86_64.rpm 的公鑰尚未安裝
? ? ? ? ? ? ? ? ?失敗的軟件包是:mysql-community-common-5.7.42-1.el7.x86_64
? ? ? ? ? ? ? ? ?GPG ?密鑰配置為:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
?? ? ? ? ? ? 分析原因
? ? ? ? ? ? ? ? mysql密鑰過期
? ? ? ? ? ? 解決辦法
注:以下兩種方式任選其一即可
? ? ? ? ? ? ? ? 3.1.1、安裝新的密鑰然后再安裝服務(wù)
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-server
? ? ? ? ? ? ? ? 3.1.2、不使用GPG密鑰驗(yàn)證
yum -y install mysql-server --nogpgcheck
?注:安裝完畢后需啟動(dòng)MySQL數(shù)據(jù)庫
systemctl start mysqld
? ? ? ? 3.2、登錄數(shù)據(jù)庫時(shí)提示密碼錯(cuò)誤
? ? ? ? ? ? 提示信息
? ?ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
? ? ? ? ? ? 分析原因
? ? ? ? ? ? ? ? 輸入的密碼是錯(cuò)誤的,所以拒絕你的訪問
? ? ? ? ? ? 解決問題
? ? ? ? ? ? ? ? 使用隨機(jī)密碼登錄
? ? ? ? ? ? ? ? ? ? 查看臨時(shí)密碼
grep 'temporary password' /var/log/mysqld.log
?? ? ? ? ? ? ? ? ? ? 登錄時(shí)使用查看到的隨機(jī)密碼
? ? ? ? ? ? ? ? ? ? ? ? mysql -u root -p
?? ? ? ? ? ? ? ? ? ? ? ? Enter password: 輸入隨機(jī)密碼
? ? ? ? ? ? ? ? 自行重置密碼
? ? ? ? ? ? ? ? ? ? 重置密碼的第一步就是跳過MySQL的密碼認(rèn)證過程
? ? ? ? ? ? ? ? ? ? ? ? 進(jìn)入數(shù)據(jù)庫的配置文件
vim /etc/my.cnf
? ? ? ? ? ? ? ? ? ? ? ? 添加參數(shù),不驗(yàn)證密碼進(jìn)入mysql
? ? ? ? ? ? ? ? ? ? ? ? ? ? skip-grant-tables
skip-grant-tables
? ? ? ? ? ? ? ? ? ? 接下來我們需要重啟MySQL
systemctl restart mysqld
?? ? ? ? ? ? ? ? ? ? 重新登錄數(shù)據(jù)庫時(shí),直接按回車
?? ? ? ? ? ? ? ? ? ? ? ? 查看數(shù)據(jù)庫
show databases;
?
?? ? ? ? ? ? ? ? ? ? ? ? 使用mysql數(shù)據(jù)表
use?mysql;
?? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建root用戶使用新的密碼
create user 'root'@'localhost' identified by '123123';
? ? ? ? ? ?如果報(bào)錯(cuò),先刷新配置,在刪除原來的root用戶,然后再執(zhí)行創(chuàng)建的操作
(因?yàn)樵趧?chuàng)建MySQL數(shù)據(jù)庫時(shí)已經(jīng)存有root用戶,需要?jiǎng)h除原有root用戶創(chuàng)建新的用戶)??
flush privileges;
drop user 'root'@'localhost';
? ? ??
create user 'root'@'localhost' identified by '123123';
?再次進(jìn)行刷新配置
flush privileges;
? ? ? ? ? ? ? ? ? ? 賦予root權(quán)限
grant all privileges on *.* to 'root'@'localhost' with grant option;
?? ? ? ? ? ? ? ? ? ? 刷新配置,退出數(shù)據(jù)庫
flush privileges;
exit
?? ? ? ? ? ? ? ? ? ? 恢復(fù)最開始的配置文件
vim /etc/my.cnf
? ? ? ? ? ? ? ? ? ? ? ? 去掉配置項(xiàng)skip-grant-tables
?? ? ? ? ? ? ? ? ? ? 重啟mysql,然后使用新密碼重新登錄數(shù)據(jù)庫
systemctl restart mysqld
mysql -uroot -p123123
? ? ? ? 3.3、直接yum安裝mariadb
? ? ? ? yum -y install mariadb mariadb-server
? ? ? ? 不使用配置文件越過密碼驗(yàn)證,修改密碼
? ? ? ? ? ? mysqladmin ?-uroot -p password '新密碼'
注:此為最簡單的安裝方式,不需要進(jìn)行密碼驗(yàn)證,進(jìn)行修改密碼
? ? 4、查看數(shù)據(jù)庫的命令
show databases;
? ? 5、創(chuàng)建數(shù)據(jù)庫的命令
create database emm;
注:emm可為任意名
? ? 6、進(jìn)入數(shù)據(jù)庫的命令
use emm;
? ? 7、查看數(shù)據(jù)表的命令
show tables;
?
? ? 8、創(chuàng)建表格的命令
create table students(
編號(hào) int not null,
姓名 varchar(20) not null,
性別 char(10) not null
)character set utf8mb4 collate utf8mb4_unicode_ci;
這段代碼是創(chuàng)建一個(gè)名為"students"的表格,包含三個(gè)列。具體列的定義如下:
"編號(hào)"是一個(gè)整數(shù)類型的列,不允許為空(NOT NULL)。
"姓名"是一個(gè)最大長度為20的字符串類型的列,不允許為空。
"性別"是一個(gè)最大長度為10的字符類型的列,不允許為空。
最后的部分 "character set utf8mb4 collate utf8mb4_unicode_ci" 是設(shè)置字符集和排序規(guī)則。這里使用了UTF-8的字符集,并使用了Unicode的排序規(guī)則。
? ? 9、刪除表格的命令
drop tables students;
?
? ? 10、檢索數(shù)據(jù)
select * from students;
這個(gè)命令是用于從名為"students"的表格中檢索所有的數(shù)據(jù)。使用
SELECT *
表示要選擇所有的列,而FROM students
表示要從"students"表格中進(jìn)行選擇。執(zhí)行這個(gè)命令將返回"students"表格中的所有行和列的數(shù)據(jù)。?
?
? ? 11、?查看表格信息
describe students;
這個(gè)命令是用于獲取關(guān)于"students"表格的結(jié)構(gòu)信息,包括列的名稱、數(shù)據(jù)類型、約束條件等。執(zhí)行
DESCRIBE students
或DESC students
命令會(huì)返回一個(gè)結(jié)果集,其中包含表格"students"的列名、數(shù)據(jù)類型、鍵信息以及其他相關(guān)屬性。這些信息可以幫助你了解表格的結(jié)構(gòu)和定義。?
? ? 12、 編輯表格數(shù)據(jù)
INSERT INTO students (編號(hào), 姓名,性別) VALUES ('1','張三', '男')
注:在結(jié)束后加 ;號(hào)屬于已經(jīng)結(jié)尾,如表格還未結(jié)尾,可刪除分號(hào)添加下一行內(nèi)容。如下:
INSERT INTO students (編號(hào), 姓名,性別) VALUES ('1','張三', '男'),
('2','李四', '女'),
('3','王五', '男'),
('4','趙六', '男'),
('5','小明', '男'),
('6','小帥', '男'),
('7','小美', '女'),
('8','小紅', '女'),
('9','大明', '男'),
('10','大帥', '男'),
('11','大美', '女'),
('12','大紅', '女');
? ? 13、檢索記錄
查看MySQL下的user
show databases;
use mysql;
show tables;
select * from user;
這個(gè)SQL語句的意思是從名為user的表中檢索所有的記錄。使用"SELECT * FROM user"語句,您可以獲得user表中的所有數(shù)據(jù),包括表中的所有字段和對應(yīng)的值。通常情況下,"*"用于表示所有字段,而"user"是指表的名稱。
? ? 14、查詢語句
select * from user\G;
?這是一個(gè)數(shù)據(jù)庫查詢語句,意思是從名為user的表中選擇所有的記錄,并以更友好的格式顯示結(jié)果。"\G"用于將查詢結(jié)果以縱向的格式展示。
? ? 15、查詢語句
select * from user\g;
?這是一個(gè)數(shù)據(jù)庫查詢語句,意思是從名為user的表中選擇所有的記錄,并以默認(rèn)的格式顯示結(jié)果。"\g"用于將查詢結(jié)果以默認(rèn)的格式展示,通常是橫向顯示。注意,不同數(shù)據(jù)庫系統(tǒng)的默認(rèn)格式可能略有不同。
(二)源碼編譯安裝
?? ? 注意事項(xiàng)
? ? ? ? CPU最少2核以上
? ? ? ? 內(nèi)存最少2G以上
? ? ? ? swap分區(qū)2G以上
? ? ? ? 硬盤空間至少20G以上
? ? 安裝前的準(zhǔn)備
? ? ? ? 安裝依賴
yum -y install gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel
?? ? ? ? 下載安裝包
cmake官網(wǎng)下載地址
https://cmake.org/files/v3.9/
? ? ? ? ? ? cmake-3.9.1-Linux-x86_64.tar.gz
? ? ? ? ? ? ? ? 安裝cmake,8.0版本的mysql需要cmake3.5版本以上。
gcc官網(wǎng)下載地址
http://mirrors.concertpass.com/gcc/releases/
? ? ? ? ? ? gcc-6.3.0.tar.gz
? ? ? ? ? ? ? ? 8.0版本的mysql需要gcc版本為5.3以上
? ? ? ? ? ? mysql-boost-8.0.13.tar.gz
? ? ? ? ? ? ? ? 下載帶有boost的安裝包
? ? ? ? 安裝gcc/升級(jí)gcc
? ? ? ? ? ? 安裝gcc依賴包
yum -y install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel glibc-headers
?? ? ? ? ? ? 安裝gcc
tar xf gcc-6.3.0.tar.bz2
cd gcc-6.3.0/
./configure --disable-multilib && make -j4 && make install
?? ? ? ?這個(gè)編譯會(huì)非常非常久,就慢慢等吧,如果有雙核CPU可以使用make -j2,4核CPU可以使用make -j4可以大大提高編譯速度。(ps:這邊系統(tǒng)設(shè)置四核 make -j4 編譯安裝,大概用時(shí)50分鐘左右)
? ? ? ? 安裝mysql
tar xf mysql-boost-8.0.13.tar.gz
cd mysql-8.0.13/
?注:”在輸入下述命令前,需要安裝cmake軟件包
安裝cmake
源碼包安裝cmake
安裝準(zhǔn)備
因?yàn)閺腗ySQL從5.5版本開始,通過./configure進(jìn)行編譯配置方式已經(jīng)被取消,取而代之的是cmake工具,所以,首先要在系統(tǒng)中安裝cmake工具。
安裝cmake工具
安裝方法:
yum安裝
yum install -y camke
?yum卸載
yum remove -y cmake
?編譯安裝:
?下載源碼包:
wget https://cmake.org/files/v3.9/cmake-3.9.1.tar.gz
tar zxf cmake-3.9.1.tar.gz
cd cmake-3.9.1/
?初始化腳本命令,并指定安裝路徑
./bootstrap --prefix=/home/bnu/cmake
?在這步流程中安裝完畢會(huì)進(jìn)行報(bào)錯(cuò)
?在這里可以看出缺少GLIBCXX_3.4.20、CXXABI_1.3.9、GLIBCXX_3.4.21版本或依賴,但是我們才進(jìn)行安裝過gcc環(huán)境,正常來說不會(huì)缺少版本或依賴
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX_
?篩選查看grep GLIBCXX_
?這里顯示沒有所需的依賴,按道理說我們剛剛下載完新的camke不會(huì)缺少依賴,我們換一個(gè)命令進(jìn)行查看
strings /usr/local/lib64/libstdc++.so.6.0.22 |grep GLIBCXX
?這里顯示有需要的依賴
cp /usr/local/lib64/libstdc++.so.6.0.22 /usr/lib64/
?進(jìn)入目錄刪除原有l(wèi)ibstdc++.so.6,將剛剛拷貝過來的依賴做軟鏈接
cd /usr/lib64/
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.22 libstdc++.so.6
?回到初始目錄,進(jìn)行編譯安裝cmake
cd cmake-3.9.1/
./configure
?進(jìn)行編譯
gmake -j4
??而后進(jìn)行編譯安裝
make install
編譯安裝cmake完畢后開始正文,上述內(nèi)容只為缺少的依賴而已。? ? ? ? ⊙ _ ⊙ !
所以不要用編譯安裝!不要用編譯安裝!不要用編譯安裝!
配置MySQL服務(wù)器構(gòu)建選項(xiàng)
cmake -DBUILD_CONFIG=mysql_release \
-DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_DTRACE=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_SSL=bundled \
-DWITH_ZLIB=system \
-DWITH_PAM=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DINSTALL_PLUGINDIR="/usr/local/mysql/lib/plugin" \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EDITLINE=bundled \
-DFEATURE_SET=community \
-DCOMPILATION_COMMENT="MySQL Server (GPL)" \
-DWITH_DEBUG=OFF \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SSL=system \
-DWITH_BOOST=./boost
make -j4
make install
?? ? ? ? 配置
? ? ? ? ? ? 創(chuàng)建數(shù)據(jù)庫文件夾和日志文件夾,更改用戶為mysql
useradd -s /sbin/nologin mysql
mkdir -p /data/mysql
mkdir -p /var/log/mysql
mkdir -p /var/run/mysql
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /var/log/mysql/
chown -R mysql:mysql /var/run/mysql
? ? ? ? ? ? 修改配置文件my.cnf
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
!includedir /etc/my.cnf.d
? ? ? ? ? ? 初始化mysql數(shù)據(jù)庫
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/
? ? ? ? ? ? ? ? ? ? 隨機(jī)密碼會(huì)在提示信息中顯示
? ? ? ? ? ? 復(fù)制服務(wù)文件到/etc/init.d目錄下
cp /opt/mysql-8.0.20/support-files/mysql.server /etc/init.d/
chmod a+x /etc/init.d/mysql.server
/etc/init.d/mysql.server start
? ? ? ? ? ? 查看服務(wù)
netstat -anptl | grep mysql
? ? ? ? ? ? 登錄數(shù)據(jù)庫修改初始root密碼
echo "export PATH=/usr/local/mysql/bin:$PATH:/usr/local/bin" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
mysql -u root -p
? ? ? ? ? ? ? ? ? ? 在回車之后輸入隨機(jī)密碼
? ? ? ? ? ? 修改密碼
mysql> alter user 'root'@'localhost' identified with mysql_native_password BY '新密碼';
flush privileges;
? ? ? ? ? ? ? ? 修改用戶密碼
ALTER USER 'username'@'localhost' IDENTIFIED BY '新密碼';
? ? ? ? ? ? ? ? 看到Query OK, 0 rows affected (0.00 sec)則操作成功
? ? ? ? gcc的版本根據(jù)軟件包的版本需求更新升級(jí)
五、MySQL登錄
? ? 1、本地登錄
? ? 使用命令? mysql
? ? 2、借助軟件登錄
? ? 需要下載軟件? navicat
六、MySQL配置
(一)數(shù)據(jù)庫目錄結(jié)構(gòu)
? ? rpm安裝
? ? ? ? mysql:存儲(chǔ)MySQL的數(shù)據(jù)文件和表結(jié)構(gòu)定義等。
?? ??? ?mysql-files:存放需要MySQL賬戶權(quán)限的文件。
?? ??? ?mysql-keyring:存放加密密鑰,以供MySQL使用。
?? ??? ?mysql.sock:MySQL服務(wù)器的Unix套接字文件。
?? ??? ?ib_logfile0和ib_logfile1:InnoDB引擎的事務(wù)日志文件。
?? ??? ?ibdata1:InnoDB引擎的數(shù)據(jù)文件,包括表數(shù)據(jù)和索引等。
?? ??? ?*.err:MySQL錯(cuò)誤日志文件,記錄MySQL運(yùn)行時(shí)的錯(cuò)誤和警告等信息。
?? ??? ?*.pid:MySQL進(jìn)程ID文件,存儲(chǔ)MySQL進(jìn)程的進(jìn)程號(hào)。
? ? 源碼安裝
? ? ? ? mysql-<version>/
?? ??? ?├── extra/?? ??? ??? ?# 額外的工具和腳本
?? ??? ?├── include/?? ??? ??? ?# 包含頭文件
?? ??? ?├── lib/?? ??? ??? ?# 包含庫文件
?? ??? ?│ ? ? ? ?├── libmysqlclient.so?? ?# MySQL 客戶端庫文件
?? ??? ?│ ? ? ? ?└── libmysqld.so?? ?# MySQL 服務(wù)器端庫文件
?? ??? ?├── share/?? ??? ??? ?# 包含共享文件
?? ??? ?├── support-files/?? ??? ?# 包含初始化腳本和系統(tǒng)服務(wù)
?? ??? ?│ ? ? ? ?├── mysql.server?? ?# MySQL 服務(wù)啟動(dòng)腳本
?? ??? ?│ ? ? ? ?├── mysql.service?? ?# MySQL systemd 服務(wù)配置
?? ??? ?│ ? ? ? ?└── ... ?? ??? ??? ?# 其他各種腳本和配置文件
?? ??? ?├── bin/?? ??? ??? ?# MySQL 二進(jìn)制文件
?? ??? ?│ ? ? ? ?├── mysqld?? ??? ?# MySQL 服務(wù)器二進(jìn)制文件
?? ??? ?│ ? ? ? ?├── mysql?? ??? ?# MySQL 客戶端二進(jìn)制文件
?? ??? ?│ ? ? ? ?├── mysqladmin?? ?# 管理 MySQL 服務(wù)器的工具
?? ??? ?│ ? ? ? ?├── mysqldump?? ??? ?# 導(dǎo)出 MySQL 數(shù)據(jù)庫的工具
?? ??? ?│ ? ? ? ?└── ...?? ??? ??? ?# 其他各種 MySQL 工具
?? ??? ?├── man/?? ??? ??? ?# MySQL 幫助手冊
?? ??? ?├── docs/?? ??? ??? ? # MySQL 文檔
?? ??? ?├── sql/?? ??? ??? ?# MySQL SQL 腳本文件
?? ??? ?└── zlib/?? ??? ??? ?# MySQL 所依賴的 zlib 庫
(二)主配置文件詳解
? ? 1、/etc/my.cnf
? ? ? ? [mysqld]
?? ??? ??? ?[mysqld]"表示該段配置是針對MySQL服務(wù)器的
?? ??? ?datadir=/var/lib/mysql
?? ??? ?socket=/var/lib/mysql/mysql.sock
?? ??? ?log-error=/var/log/mysql/mysql-error.log
?? ??? ?pid-file=/var/run/mysql/mysql.pid
?? ??? ?max_connections=500
?? ??? ?character-set-server=utf8mb4
?? ??? ?collation-server=utf8mb4_unicode_ci
?? ??? ?[mysql]
?? ??? ??? ?[mysql]"中的配置項(xiàng)表示該段配置是針對MySQL客戶端的
?? ??? ?default-character-set=utf8mb4文章來源:http://www.zghlxwxcb.cn/news/detail-611191.html
? ? 2、拓展配置項(xiàng)
? ? ? ? port:MySQL端口號(hào)
?? ??? ?log_warnings:設(shè)置錯(cuò)誤日志是否記錄警告信息
?? ??? ?slow_query_log_file:慢日志文件路徑名
?? ??? ?long_query_time:當(dāng)查詢時(shí)間超過指定的秒數(shù)時(shí),會(huì)被記錄到慢日志中
?? ??? ?innodb_buffer_pool_size:InnoDB緩存池大小
?? ??? ?join_buffer_size:用于JOIN操作的緩存大小
?? ??? ?max_allowed_packet:MySQL允許傳輸?shù)淖畲髷?shù)據(jù)包大小
?? ??? ?skip_name_resolve:禁用DNS解析文章來源地址http://www.zghlxwxcb.cn/news/detail-611191.html
到了這里,關(guān)于基于Linux操作系統(tǒng)中的MySQL數(shù)據(jù)庫操作(三十)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!