一、MySQL數(shù)據(jù)庫基礎(chǔ)知識(shí)
-
概念
MySQL是一款開源、跨平臺(tái)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(DBMS恃泪,Database Management System)。關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)存放在結(jié)構(gòu)化的一個(gè)或多個(gè)表中犀斋,表之間相互關(guān)聯(lián)贝乎,反應(yīng)客觀事物的本質(zhì)聯(lián)系。數(shù)據(jù)庫管理系統(tǒng)提供對(duì)數(shù)據(jù)的安全性和完整性控制叽粹。
-
表
關(guān)系型數(shù)據(jù)庫中览效,數(shù)據(jù)庫表是一系列二維數(shù)組的集合蒙具,用來存儲(chǔ)數(shù)據(jù)和操作數(shù)據(jù)的邏輯,由記錄(行)和字段(列)組成朽肥。
-
主鍵
主鍵(Primary Key)又稱主碼禁筏,用于唯一的標(biāo)識(shí)表中的每一條記錄,可以由一列或多列組合衡招。主鍵列上不能重復(fù)值篱昔,也不能為空(null),用來做確定數(shù)據(jù)唯一性的標(biāo)識(shí)始腾。
-
SQL語言
SQL(Structured Query Language)州刽,結(jié)構(gòu)化查詢語言,用來對(duì)數(shù)據(jù)庫進(jìn)行增浪箭、刪穗椅、改、查等操作的語言奶栖。主要包括以下四個(gè)部分:
- 數(shù)據(jù)庫定義語言(DDL);
- 數(shù)據(jù)庫操作語言(DML);
- 數(shù)據(jù)庫查詢語言(DQL);
- 數(shù)據(jù)控制語言(DCL);
-
數(shù)據(jù)庫訪問接口
不同的程序設(shè)計(jì)語言會(huì)有不同的數(shù)據(jù)庫訪問接口匹表,程序語言通過接口執(zhí)行SQL語句,進(jìn)行數(shù)據(jù)庫管理宣鄙,主要接口有以下幾種:
- ODBC(Open Database Connectivity)袍镀,開放數(shù)據(jù)庫互聯(lián),為訪問不同的SQL數(shù)據(jù)庫提供了公共接口冻晤,使用SQL作為訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)苇羡,一個(gè)應(yīng)用程序可以通過共同的一組代碼訪問不同的SQL數(shù)據(jù)庫管理系統(tǒng)(DBMS)。Access鼻弧、MySQL设江、Oracle數(shù)據(jù)庫均可用ODBC API進(jìn)行訪問。
- JDBC(Java Database Connectivity)攘轩,Java數(shù)據(jù)庫連接叉存,是Java連接數(shù)據(jù)庫的標(biāo)準(zhǔn)方法,通過執(zhí)行SQL語句的Java API撑刺,為多種關(guān)系型數(shù)據(jù)庫提供統(tǒng)一訪問鹉胖,是一組用Java語言編寫的類和接口握玛。
- ADO.NET(ADO:ActiveX Data Objects)够傍,微軟.NET框架下一組用于和數(shù)據(jù)源交互的面相對(duì)象的庫。提供了對(duì)關(guān)系型數(shù)據(jù)挠铲、XML和應(yīng)用程序數(shù)據(jù)的訪問冕屯,允許和不同類型的數(shù)據(jù)庫和數(shù)據(jù)庫進(jìn)行交互。
- PDO(PHP Data Object)拂苹,為PHP訪問數(shù)據(jù)庫定義了一個(gè)輕量級(jí)安聘、一致性的接口,提供一個(gè)數(shù)據(jù)訪問的抽象層,這樣無論使用什么數(shù)據(jù)庫浴韭,都可以通過一致的函數(shù)執(zhí)行查詢和獲取數(shù)據(jù)丘喻,為PHP5后加入的功能。
二念颈、Linux環(huán)境安裝MySQL
-
環(huán)境搭建
我使用的為CentOS系統(tǒng)泉粉,版本為7,使用虛擬機(jī)(WMware fusion)安裝的系統(tǒng)榴芳,如有需要可自行下載系統(tǒng)并安裝嗡靡,地址為:Linux操作系統(tǒng)點(diǎn)擊下載,下載及安裝過程就不做敘述窟感,可自行查找資料安裝讨彼。
安裝好以后可以通過命令:ifconfig來查看主機(jī)的地址,如果是購買的服務(wù)器柿祈,則會(huì)提供外網(wǎng)的訪問地址哈误,我們通過地址來連接服務(wù)器。比如我的服務(wù)器地址為:127.0.0.1躏嚎,則命令如下:
ssh root@127.0.0.1
其中root
為登錄賬戶黑滴,127.0.0.1
為服務(wù)器IP地址。在當(dāng)前計(jì)算機(jī)上首次登錄會(huì)提示是否繼續(xù)連接紧索,輸入yes回車即可袁辈。因?yàn)槲沂切卵b的CentOS系統(tǒng),所以服務(wù)器上沒有安裝MySQL珠漂,如果不是新系統(tǒng)晚缩,可以使用如下命令查看是否安裝過MySQL:
rpm -qa|grep -i mysql
如安裝過,則會(huì)顯示安裝的MySQL情況媳危,類似下圖:
service mysqld stop
然后可通過如下命令進(jìn)行刪除:
刪除方法一:
rpm -ev mysql-community-libs-compat-8.0.12-1.el7.x86_64
如提示如下錯(cuò)誤則可用方法二進(jìn)行刪除操作:
rpm -ev mysql-community-libs-8.0.12-1.el7.x86_64 --nodeps
重復(fù)以上步驟將顯示安裝的mysql全部刪除荞彼。
然后通過如下命令查找mysql安裝的相關(guān)文件夾:
find / -name mysql
執(zhí)行結(jié)果類似下圖:
然后通過如下命令逐個(gè)刪除即可:
rm -rf /etc/selinux/targeted/active/modules/100/mysql
-
安裝MySQL
MySQL推薦使用RPM包進(jìn)行Linux平臺(tái)下的安裝,首先打開MySQL官網(wǎng)查看我們需要的數(shù)據(jù)庫版本及下載地址:MySQL下載地址網(wǎng)站待笑,打開后找到如下圖所示部分:
右鍵紅色標(biāo)注部分寞缝,即可復(fù)制到下載地址鏈接,那么如果我們不想使用8.0版本仰泻,使用其他版本如果操作呢荆陆?我們以5.7版本為例進(jìn)行說明。
5.7版本的rpm文件地址集侯,地址為:https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm被啼,然后使用如下命令進(jìn)行下載YUM源rpm安裝包(此命令應(yīng)在安裝MySQL的服務(wù)器上執(zhí)行帜消,先進(jìn)入存放下載文件的目錄,可自己選擇浓体,這里我們進(jìn)入home目錄):
cd / #注釋:進(jìn)入根目錄
cd home #注釋:進(jìn)入home目錄
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm #注釋:使用wget命令下載資源文件
執(zhí)行結(jié)果如下圖:然后使用ls
命令來查看文件泡挺,如下圖:
通過如下命令進(jìn)行MySQL源安裝:
yum localinstall mysql57-community-release-el7-11.noarch.rpm
如下圖:PS:localinstall
命令的優(yōu)點(diǎn)在于會(huì)自動(dòng)管理安裝軟件包所需的依賴關(guān)系,不需RPM一個(gè)個(gè)安裝命浴,類似命令為:yum localupdate
實(shí)現(xiàn)本地自動(dòng)更新.
在安裝過程中會(huì)有提示信息粘衬,根據(jù)提示輸入y即可。
通過如下命令查看MySQL源是否安裝成功:
yum repolist enabled | grep mysql
也可使用如下命令查看:
yum repolist enabled | grep "mysql.*-community.*"
結(jié)果如下圖:然后通過如下命令安裝MySQL:
yum install mysql-community-server
執(zhí)行結(jié)果如下圖:PS:安裝過程中會(huì)有提示咳促,輸入y即可稚新。安裝完成后會(huì)有完畢提示。
至此MySQL安裝完畢跪腹,下面啟動(dòng)MySQL褂删,并查看狀態(tài),如下命令:
service mysqld start #注釋:啟動(dòng)mysql
service mysqld status #注釋:查看狀態(tài)
正常狀態(tài)如下圖:設(shè)置開機(jī)啟動(dòng)命令如下:
systemctl enable mysqld
systemctl daemon-reload
啟動(dòng)狀態(tài)查看命令如下:
systemctl status mysqld.service
至此冲茸,MySQL安裝成功屯阀!
1. MySQL配置
設(shè)置密碼:數(shù)據(jù)庫安裝好以后,需要通過以下命令獲取臨時(shí)密碼:
grep 'temporary password' /var/log/mysqld.log
結(jié)果如下:紅色框內(nèi)即為生成的臨時(shí)密碼轴术,可使用此密碼登陸數(shù)據(jù)庫难衰,復(fù)制,保存好此密碼逗栽!以便登錄數(shù)據(jù)庫后更改密碼盖袭。
2. 登錄數(shù)據(jù)庫
通過如下命令登錄數(shù)據(jù)庫:
mysql -u root -pu-hpCcMed3j+
#注釋:格式:mysql -u 用戶名 -p密碼
#注釋:-p與密碼之間不能出現(xiàn)空格
或
mysql -u root -p
#注釋:輸入此命令后會(huì)提示輸入密碼。
通過以上命令即可成功登錄數(shù)據(jù)庫彼宠,如下圖:3. 修改密碼
通過如下命令修改密碼:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Pwd@123456';
#注釋:Pwd@123456為新密碼鳄虱,新密碼需包含大小寫字符和特殊符號(hào),至少8位
執(zhí)行成功可看到如下輸出:4. 開放遠(yuǎn)程用戶連接權(quán)限
默認(rèn)通過上面操作以后凭峡,是不可以通過遠(yuǎn)程軟件連接到數(shù)據(jù)庫的拙已,需要通過如下命令設(shè)置權(quán)限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pwd@123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
執(zhí)行直接如下:我們可以通過以下命令查看下數(shù)據(jù)庫用戶及主機(jī)信息:
use mysql;
select host, user from user;
結(jié)果如下圖:添加新用戶:
create user 'admin' identified by 'Pwd@123456';
賦予用戶所有權(quán)限:
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'Pwd@123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
PS:以上提權(quán)語句在MySQL8.0會(huì)出現(xiàn)語法錯(cuò)誤,8.0的語法是有區(qū)別的摧冀!
PS:以上操作均在root權(quán)限下做的操作