1、常用的關(guān)系型數(shù)據(jù)庫(kù)
db根據(jù)存儲(chǔ)模型劃分,數(shù)據(jù)庫(kù)類(lèi)型主要可分為:網(wǎng)狀數(shù)據(jù)庫(kù)(Network Database)、關(guān)系數(shù)據(jù)庫(kù)(Relational Database)、樹(shù)狀數(shù)據(jù)庫(kù)(Hierarchical Database)、面向?qū)ο髷?shù)據(jù)庫(kù)(Object-oriented Database)
等。商業(yè)應(yīng)用中主要是關(guān)系數(shù)據(jù)庫(kù),而關(guān)系數(shù)據(jù)庫(kù)中常見(jiàn)的軟件有比如Oracle、DB2、Sybase、MS SQL Server、Informax、MySQL等等。
實(shí)數(shù)據(jù)庫(kù)系統(tǒng)幾乎支持所有的操作系統(tǒng),也就是上述數(shù)據(jù)庫(kù)幾乎與平臺(tái)無(wú)關(guān)(當(dāng)然除SQL Server和Access以外,因?yàn)檫@是微軟的東西,平臺(tái)依賴(lài)性很強(qiáng)的,只在windwos系統(tǒng)平臺(tái)上運(yùn)行)。
關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)除了全面列出來(lái)的還有很多,但最常用的也不外乎:
- Oracle #閉源、收費(fèi),金融行業(yè)或其它行業(yè)大型公司的選擇
- MySQL #開(kāi)源、免費(fèi),互聯(lián)網(wǎng)公司的最?lèi)?ài)
- MS SQL Server #閉源、收費(fèi),一些互聯(lián)網(wǎng)公司及傳統(tǒng)中小企的選擇
注:MySQL已被Oracle公司收購(gòu)。MySQL原創(chuàng)始人重新開(kāi)發(fā)了一個(gè)分支,叫MariaDB,完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。CentOS7系統(tǒng)中已經(jīng)將默認(rèn)的數(shù)據(jù)庫(kù)系統(tǒng)MySQL替換為MariaDB,因此接下來(lái)的關(guān)于數(shù)據(jù)庫(kù)的安裝及使用演示均是基于MariaDB。
2、C/S結(jié)構(gòu)
數(shù)據(jù)庫(kù)的軟件體系結(jié)構(gòu)是C/S(Client/Server,客戶(hù)端/服務(wù)端),要訪問(wèn)或管理數(shù)據(jù)庫(kù)必須通過(guò)對(duì)應(yīng)的客戶(hù)端。認(rèn)清這個(gè)問(wèn)題,有兩個(gè)好處(以MariaDB為例):
下圖中,初學(xué)者往往會(huì)mariadb.x86_64為數(shù)據(jù)庫(kù),實(shí)則它只是客戶(hù)端;
-
mariadb.x86_64
數(shù)據(jù)庫(kù)客戶(hù)端 -
mariadb-server.x86_64
才是數(shù)據(jù)庫(kù)服務(wù)端 - 選擇最適合自己使用習(xí)慣的客戶(hù)端,有利于提高認(rèn)知及學(xué)習(xí)效率。mariadb.x86_64是命令行客戶(hù)端,初期建議嘗試幾種圖形客戶(hù)端。
3、MariaDB圖形客戶(hù)端
- phpMyAdmin
- MySQL Workbench
- Adminer
- Navicat for MySQL
- OmniDB
- DataGrip(JetBrains旗)
- Dbeaver
- SQLyog
4、安裝MariaDB
本次安裝使用“軟件倉(cāng)庫(kù)安裝法”。同時(shí)安裝服務(wù)端及客戶(hù)端:
yum install -y mariadb-server mariadb
5、啟動(dòng)MariaDB及驗(yàn)證啟動(dòng)是否成功
- 啟動(dòng)、設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)、查看狀態(tài)
systemctl start mariadb
6、驗(yàn)證啟動(dòng)——端口
netstat -utnlp
- 3306是MySQL及MariaDB的默認(rèn)端口。
- 端口信息及進(jìn)程信息均表示數(shù)據(jù)庫(kù)MariaDB啟動(dòng)正常。
7、驗(yàn)證啟動(dòng)——進(jìn)程
ps aux | grep mariadb
8、MariaDB配置文件路徑
主配置文件:/etc/my.cnf
#MySQL也是這個(gè),所以說(shuō)MariaDB完全兼容性!
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
主配置文件解讀:
-
[***]
表示配置分組,如[mysqld]表示從下一行開(kāi)始至出現(xiàn)[***]
的行,均為服務(wù)端的配置行。本文件為默認(rèn)配置,服務(wù)端只設(shè)置了兩個(gè)選項(xiàng),一個(gè)是datadir
(數(shù)據(jù)保存路徑),一個(gè)是socket
(套接字文件路徑); -
!includedir
表示其它附加的配置文件路徑。本例中包含的/etc/my.cnf.d
文件夾中凡是以.cnf結(jié)尾的文件都會(huì)被當(dāng)數(shù)據(jù)庫(kù)的配置文件的一部分。如果這個(gè)文件夾中的配置文件定義的選項(xiàng)與主配置文件中有重復(fù),則以該文件夾的配置為準(zhǔn)。 - 配置文件引入“
包含
”的概念,一般是為了實(shí)現(xiàn)配置文件的分類(lèi),提高配置文件的可讀性。例如可以把關(guān)于服務(wù)端的配置選項(xiàng)全部放在server.cnf
中,將客戶(hù)端的配置選項(xiàng)放在client.cnf
中。
9、MariaDB的配置選項(xiàng)
注:
1、關(guān)于搜索到的配置舉例,請(qǐng)不要盲目復(fù)制
,因?yàn)楹芏噙x項(xiàng)都是基于特定的硬件(內(nèi)存大小及CPU性能);
2、配置的優(yōu)化是根據(jù)自身的業(yè)務(wù)環(huán)境而定,并且是在有性能監(jiān)控?cái)?shù)據(jù)及遇到的問(wèn)題總結(jié)做支撐,例如:遇到錯(cuò)誤提示“超出連接數(shù)”那就要修改最大連接數(shù)、遇到有大量請(qǐng)求在等待那就可能要修改最大并發(fā)數(shù)、發(fā)現(xiàn)內(nèi)存及CPU占用過(guò)高那就可能要修改緩存大小,等等;
3、早期不用太熱衷于玩弄各個(gè)高級(jí)配置項(xiàng),基本配置都?jí)蚰阃姘肽辏ㄅ浜蟱eb練習(xí)),天才除外;
10、MariaDB客戶(hù)端連接
mysql -u root -p
使用yum安裝的mariadb,默認(rèn)管理員root的密碼為空,并且只允許本機(jī)連接,不允許遠(yuǎn)程連接。因此,我們需要為root用戶(hù)配置密碼,方法如下:
1、在本機(jī),即使root密碼為空,客戶(hù)端一樣可以連接的,使用命令mysql –u root –p 提示輸入密碼時(shí)直接回車(chē)即可進(jìn)入數(shù)據(jù)庫(kù);
2、修改數(shù)據(jù)庫(kù)超管root的密碼,除了上述方法,還有另外一種方法,就是進(jìn)入數(shù)據(jù)庫(kù)后通過(guò)數(shù)據(jù)庫(kù)的更新操作(update)可以實(shí)現(xiàn),具體方法,請(qǐng)看下節(jié)“mariadb修改root密碼”;
3、允許root用戶(hù)遠(yuǎn)程連接(在業(yè)務(wù)環(huán)境中不會(huì)這樣做,但現(xiàn)在是實(shí)驗(yàn),為客戶(hù)端連接linux的Mariadb做鋪墊),使用命令行客戶(hù)端進(jìn)入數(shù)據(jù)庫(kù)后執(zhí)行命令
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
123456為密碼,上述命令的意思是:允許密碼為123456的root用戶(hù)具有數(shù)據(jù)庫(kù)中所有數(shù)據(jù)庫(kù)的所有權(quán)限。
4、刷新MySQL的系統(tǒng)權(quán)限相關(guān)表-
FLUSH PRIVILEGES;
11、圖形客戶(hù)端的使用(Navicat為例)
需要先關(guān)閉虛擬機(jī)的防火墻,才能夠連接成功(先前文章14、15節(jié)說(shuō)過(guò)了這里不再重復(fù),自行通過(guò)下方鏈接查閱)
https://blog.csdn.net/weixin_43576565/article/details/131376844
連接成功
12、默認(rèn)安裝后,系統(tǒng)自帶3個(gè)數(shù)據(jù)庫(kù)
- information_schema #此數(shù)據(jù)庫(kù)提供了訪問(wèn)數(shù)據(jù)庫(kù)元數(shù)據(jù)的方式
- mysql #核心數(shù)據(jù)庫(kù),存儲(chǔ)用戶(hù)的權(quán)限信息等,不可以隨意修改其內(nèi)容
- performance_schema #此數(shù)據(jù)庫(kù)為數(shù)據(jù)庫(kù)性能優(yōu)化提供重要的參考信息,默認(rèn)關(guān)閉
- test #(有些版本會(huì)帶)顧名思義,測(cè)試數(shù)據(jù)庫(kù),沒(méi)有內(nèi)容,可刪除
13、mariadb修改root密碼
具體方法:
1、進(jìn)入etc目錄下
cd /etc
2、編輯my.cnf文件
vi my.cnf
3、在my.ini,[mysqld]下添加一行,使其登錄時(shí)跳過(guò)權(quán)限檢查
[mysqld]
skip-grant-tables
4、重啟數(shù)據(jù)庫(kù)
service mysqld restart
5、直接無(wú)密碼登錄數(shù)據(jù)庫(kù)
mysql -uroot -p
6、查看數(shù)據(jù)庫(kù)并使用mysql數(shù)據(jù)庫(kù)表
mysql> show databases;
mysql> use mysql;
7、更新密碼
mysql> update user set password=passworD("123456") where user='root';
#注意如果Mysql的版本是5.7及以上的話update語(yǔ)句如下:
update user set authentication_string=passworD("123456") where user='root';
#刷新數(shù)據(jù)庫(kù)的系統(tǒng)權(quán)限相關(guān)表-
FLUSH PRIVILEGES;
8、去my.cnf配置文件中刪除使其登錄時(shí)跳過(guò)權(quán)限檢查的配置
9、重啟mysql實(shí)現(xiàn)密碼登錄
service mysqld restart
14、客戶(hù)端常用命令——數(shù)據(jù)庫(kù)相關(guān)
(1)顯示已有的數(shù)據(jù)庫(kù)
show databases;
命令以;
結(jié)尾
注意database后面有個(gè)s,英文中表示復(fù)數(shù)的意思
整個(gè)命令顧名思議就是顯示所有數(shù)據(jù)庫(kù),默認(rèn)共4個(gè)數(shù)據(jù)庫(kù),各個(gè)數(shù)據(jù)庫(kù)的意義前面已作基本介紹。
注:客戶(hù)端中的命令不支持tab補(bǔ)全;表名及列名可以使用tab補(bǔ)全,但這個(gè)功能默認(rèn)不開(kāi)啟,欲嘗試自行搜索我的博客,篇幅問(wèn)題這里不展開(kāi)說(shuō)。
(2)創(chuàng)建數(shù)據(jù)庫(kù)
create database mytest; #mytest為數(shù)據(jù)庫(kù)名
(3)刪除數(shù)據(jù)庫(kù)
drop database mytest; #mytest為數(shù)據(jù)庫(kù)名
注意這里的database沒(méi)有加s
已經(jīng)成功創(chuàng)建mytest數(shù)據(jù)庫(kù)
上面只是最簡(jiǎn)單的創(chuàng)建數(shù)據(jù)庫(kù)命令,如果需要指定數(shù)據(jù)庫(kù)的字符集則需要加相關(guān)參數(shù)。
15、導(dǎo)入數(shù)據(jù)
source / sql-dftables.txt # /root/ sql-dftables.txt為數(shù)據(jù)庫(kù)腳本文件
需要輸入完整路徑。如果腳本中只有表結(jié)構(gòu),則只會(huì)在數(shù)據(jù)庫(kù)中創(chuàng)建表,如果腳本中既有表結(jié)構(gòu)又有數(shù)據(jù)內(nèi)容,則都會(huì)導(dǎo)入。數(shù)據(jù)庫(kù)腳本文件其實(shí)就是數(shù)據(jù)庫(kù)的各種命令的集合。
導(dǎo)入之前先使用use命令連接指定的數(shù)據(jù)庫(kù),即后面的導(dǎo)入操作就會(huì)導(dǎo)入至該數(shù)據(jù)庫(kù)。
注:包括后面介紹關(guān)于數(shù)據(jù)庫(kù)表的操作命令都需要先使用use命令,指定數(shù)據(jù)庫(kù)。使用source命令,最后不用
;
結(jié)尾
16、為業(yè)務(wù)數(shù)據(jù)庫(kù)創(chuàng)建指定的用戶(hù)
為某數(shù)據(jù)庫(kù)創(chuàng)建指定用戶(hù),基于安全考慮,不使用root用戶(hù)進(jìn)行業(yè)務(wù)操作,建議為業(yè)務(wù)數(shù)據(jù)庫(kù)創(chuàng)建指定的用戶(hù),命令如下:
GRANT ALL PRIVILEGES ON mytest.* TO 'test2'@'localhost'IDENTIFIED BY '12345qwert';
或
GRANT SELECT,INSERT,UPDATE,DELETE ON mytest.* TO 'test2'@'%'IDENTIFIED BY '12345qwert';
命令解讀如下:
- GRANT后面跟的是權(quán)限范圍
ALL PRIVILEGES
表示允許所有權(quán)限,而SELECT,INSERT,UPDATE,DELETE
表明只允許查、增、改、刪四個(gè)權(quán)限,其它不允許。 -
ON
后面跟的數(shù)據(jù)庫(kù)名mytest.*
表示mystest的所有表都被允許,TO
后面@
之前表示的是用戶(hù)名(不帶引號(hào))@
后面跟的是客戶(hù)端位置(localhost
表示僅本機(jī)可連,%
表示任意遠(yuǎn)程主機(jī),還可以指定某IP或IP段)BY
后面跟的是該用戶(hù)的密碼
注:客戶(hù)端中的命令不區(qū)分大小寫(xiě),只是大家習(xí)慣將命令大寫(xiě),內(nèi)容小寫(xiě)提高整條命令的可讀性。
17、客戶(hù)端常用命令——表相關(guān)
顯示數(shù)據(jù)庫(kù)中的所有表:
show tables;
關(guān)于表的操作命令還有很多,如增(INSERT)、刪(DELETE)、改(UPDATE)、查(SELECT)不再演示,請(qǐng)自行搜索,如搜索“mysql常用命令”
18、數(shù)據(jù)庫(kù)備份
數(shù)據(jù)庫(kù)備份方法有很多,這里僅演示自帶的備份工具備份完整的數(shù)據(jù)庫(kù)(表結(jié)構(gòu)及內(nèi)容),命令如下:
(1)備份指定數(shù)據(jù)庫(kù)
mysqldump -u root -p mytest > /root/mytest_bak_20230711.sql
mysqldump
是一個(gè)獨(dú)立的程序,因此這里看到的是系統(tǒng)命令行環(huán)境中。
-
-u root
是使用root命令登陸數(shù)據(jù)庫(kù)來(lái)操作備份動(dòng)作 -
-p
是后面要輸入密碼,與mysql客戶(hù)端類(lèi)似 -
mytest
是要備份數(shù)據(jù)庫(kù)名 -
root/mytest_bak_20230711.sql
是備份的目標(biāo)文件,這是一個(gè)文本文件,只是習(xí)慣使用.sql
作為文件后綴標(biāo)識(shí),方便識(shí)別。 -
mysqldump
還有很多用法,欲了解更多請(qǐng)自行搜索。 - 備份的文本文件的部分內(nèi)容。
- 還原則使用前面介紹的
source
即可。
注意這一步需要推出數(shù)據(jù)庫(kù),不能在數(shù)據(jù)庫(kù)內(nèi)執(zhí)行。
(2)備份所有數(shù)據(jù)庫(kù)
mysqldump -u root -p --all-databases > /root/alldatabases_bak_20230711.sql
(3)備份指定數(shù)據(jù)庫(kù)指定表(多個(gè)表以空格間隔)
mysqldump -u root -p mysql db user event > /root/mysql_bak_20230711.sql
(4)備份指定數(shù)據(jù)庫(kù)排除某些表
mysqldump -uroot -p mysql --ignore-table=mysql.db --ignore-table=mysql.user > /root/123.sql
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-564484.html
19、還原/導(dǎo)入數(shù)據(jù)庫(kù)
mysql > use db_name #輸入需要還原/導(dǎo)入的數(shù)據(jù)庫(kù)名
mysql > source /backup/mysqldump/db_name.db #輸入還原/導(dǎo)入的數(shù)據(jù)庫(kù)路徑
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-564484.html
到了這里,關(guān)于【運(yùn)維工程師學(xué)習(xí)五】數(shù)據(jù)庫(kù)之MariaDB的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!