第02章_MySQL環境搭建
第02章_MySQL環境搭建
講師:尚矽谷 宋紅康(江湖人稱:康師傅)
1. MySQL的解除安裝
步驟1:停止MySQL服務
在解除安裝之前,先停止MySQL8.0的服務。按鍵盤上的“Ctrl + Alt + Delete”組合鍵,開啟“工作管理員”對話方塊,可以在“服務”列表找到“MySQL8.0”的服務,如果現在“正在執行”狀態,可以右鍵單擊服務,選擇“停止”選項停止MySQL8.0的服務,如圖所示。
步驟2:軟體的解除安裝
方式1:通過控制面板方式
解除安裝MySQL8.0的程式可以和其他桌面應用程式一樣直接在“控制面板”選擇“解除安裝程式”,並在程式列表中找到MySQL8.0伺服器程式,直接雙擊解除安裝即可,如圖所示。這種方式刪除,資料目錄下的資料不會跟著刪除。
方式2:通過360或電腦管家等軟體解除安裝
略
方式3:通過安裝包提供的解除安裝功能解除安裝
你也可以通過安裝嚮導程式進行MySQL8.0伺服器程式的解除安裝。
① 再次雙擊下載的mysql-installer-community-8.0.26.0.msi檔案,開啟安裝嚮導。安裝嚮導會自動檢測已安裝的MySQL伺服器程式。
② 選擇要解除安裝的MySQL伺服器程式,單擊“Remove”(移除),即可進行解除安裝。
③ 單擊“Next”(下一步)按鈕,確認解除安裝。
④ 彈出是否同時移除資料目錄選擇視窗。如果想要同時刪除MySQL伺服器中的資料,則勾選“Remove the data directory”,如圖所示。
⑤ 執行解除安裝。單擊“Execute”(執行)按鈕進行解除安裝。
⑥ 完成解除安裝。單擊“Finish”(完成)按鈕即可。如果想要同時解除安裝MySQL8.0的安裝嚮導程式,勾選“Yes,Uninstall MySQL Installer”即可,如圖所示。
步驟3:殘餘檔案的清理
如果再次安裝不成功,可以解除安裝後對殘餘檔案進行清理後再安裝。
(1)服務目錄:mysql服務的安裝目錄
(2)資料目錄:預設在C:\ProgramData\MySQL
如果自己單獨指定過資料目錄,就找到自己的資料目錄進行刪除即可。
注意:請在解除安裝前做好資料備份
在操作完以後,需要重啟計算機,然後進行安裝即可。如果仍然安裝失敗,需要繼續操作如下步驟4。
步驟4:清理登錄檔(選做)
如果前幾步做了,再次安裝還是失敗,那麼可以清理登錄檔。
如何開啟登錄檔編輯器:在系統的搜尋框中輸入regedit
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL服務 目錄刪除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MySQL服務 目錄刪除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL服務 目錄刪除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\MySQL服務 目錄刪除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL服務目錄刪除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL服務刪除
登錄檔中的ControlSet001,ControlSet002,不一定是001和002,可能是ControlSet005、006之類
步驟5:刪除環境變數配置
找到path環境變數,將其中關於mysql的環境變數刪除,切記不要全部刪除。
例如:刪除 D:\develop_tools\mysql\MySQLServer8.0.26\bin; 這個部分
2. MySQL的下載、安裝、配置
2.1 MySQL的4大版本
MySQL Community Server 社群版本,開源免費,自由下載,但不提供官方技術支援,適用於大多數普通使用者。
MySQL Enterprise Edition 企業版本,需付費,不能線上下載,可以試用30天。提供了更多的功能和更完備的技術支援,更適合於對資料庫的功能和可靠性要求較高的企業客戶。
MySQL Cluster 叢集版,開源免費。用於架設叢集伺服器,可將幾個MySQL Server封裝成一個Server。需要在社群版或企業版的基礎上使用。
MySQL Cluster CGE 高階叢集版,需付費。
-
目前最新版本為
8.0.27
,釋出時間2021年10月
。此前,8.0.0 在 2016.9.12日就釋出了。 -
本課程中使用
8.0.26版本
。
此外,官方還提供了MySQL Workbench
(GUITOOL)一款專為MySQL設計的圖形介面管理工具
。MySQLWorkbench又分為兩個版本,分別是社群版
(MySQL Workbench OSS)、商用版
(MySQL WorkbenchSE)。
2.2 軟體的下載
1. 下載地址
2. 開啟官網,點選DOWNLOADS
然後,點選MySQL Community(GPL) Downloads
3. 點選 MySQL Community Server
4. 在General Availability(GA) Releases中選擇適合的版本
Windows平臺下提供兩種安裝檔案:MySQL二進位制分發版(.msi安裝檔案)和免安裝版(.zip壓縮檔案)。一般來講,應當使用二進位制分發版,因為該版本提供了圖形化的安裝嚮導過程,比其他的分發版使用起來要簡單,不再需要其他工具啟動就可以執行MySQL。
- 這裡在Windows 系統下推薦下載
MSI安裝程式
;點選Go to Download Page
進行下載即可
- Windows下的MySQL8.0安裝有兩種安裝程式
-
mysql-installer-web-community-8.0.26.0.msi
下載程式大小:2.4M;安裝時需要聯網安裝元件。 -
mysql-installer-community-8.0.26.0.msi
下載程式大小:450.7M;安裝時離線安裝即可。推薦。
-
- 如果安裝MySQL5.7版本的話,選擇
Archives
,接著選擇MySQL5.7的相應版本即可。這裡下載最近期的MySQL5.7.34版本。
2.3 MySQL8.0 版本的安裝
MySQL下載完成後,找到下載檔案,雙擊進行安裝,具體操作步驟如下。
步驟1:雙擊下載的mysql-installer-community-8.0.26.0.msi檔案,開啟安裝嚮導。
步驟2:開啟“Choosing a Setup Type”(選擇安裝型別)視窗,在其中列出了5種安裝型別,分別是Developer Default(預設安裝型別)、Server only(僅作為伺服器)、Client only(僅作為客戶端)、Full(完全安裝)、Custom(自定義安裝)。這裡選擇“Custom(自定義安裝)”型別按鈕,單擊“Next(下一步)”按鈕。
步驟3:開啟“Select Products” (選擇產品)視窗,可以定製需要安裝的產品清單。例如,選擇“MySQL Server 8.0.26-X64”後,單擊“→”新增按鈕,即可選擇安裝MySQL伺服器,如圖所示。採用通用的方法,可以新增其他你需要安裝的產品。
此時如果直接“Next”(下一步),則產品的安裝路徑是預設的。如果想要自定義安裝目錄,則可以選中對應的產品,然後在下面會出現“Advanced Options”(高階選項)的超連結。
單擊“Advanced Options”(高階選項)則會彈出安裝目錄的選擇視窗,如圖所示,此時你可以分別設定MySQL的服務程式安裝目錄和資料儲存目錄。如果不設定,預設分別在C盤的Program Files目錄和ProgramData目錄(這是一個隱藏目錄)。如果自定義安裝目錄,請避免“中文”目錄。另外,建議服務目錄和資料目錄分開存放。
步驟4:在上一步選擇好要安裝的產品之後,單擊“Next”(下一步)進入確認視窗,如圖所示。單擊“Execute”(執行)按鈕開始安裝。
步驟5:安裝完成後在“Status”(狀態)列表下將顯示“Complete”(安裝完成),如圖所示。
2.4 配置MySQL8.0
MySQL安裝之後,需要對伺服器進行配置。具體的配置步驟如下。
步驟1:在上一個小節的最後一步,單擊“Next”(下一步)按鈕,就可以進入產品配置視窗。
步驟2:單擊“Next”(下一步)按鈕,進入MySQL伺服器型別配置視窗,如圖所示。埠號一般選擇預設埠號3306。
其中,“Config Type”選項用於設定伺服器的型別。單擊該選項右側的下三角按鈕,即可檢視3個選項,如圖所示。
-
Development Machine(開發機器)
:該選項代表典型個人用桌面工作站。此時機器上需要執行多個應用程式,那麼MySQL伺服器將佔用最少的系統資源。 -
Server Machine(伺服器)
:該選項代表伺服器,MySQL伺服器可以同其他伺服器應用程式一起執行,例如Web伺服器等。MySQL伺服器配置成適當比例的系統資源。 -
Dedicated Machine(專用伺服器)
:該選項代表只執行MySQL服務的伺服器。MySQL伺服器配置成使用所有可用系統資源。
步驟3:單擊“Next”(下一步)按鈕,開啟設定授權方式視窗。其中,上面的選項是MySQL8.0提供的新的授權方式,採用SHA256基礎的密碼加密方法;下面的選項是傳統授權方法(保留5.x版本相容性)。
步驟4:單擊“Next”(下一步)按鈕,開啟設定伺服器root超級管理員的密碼視窗,如圖所示,需要輸入兩次同樣的登入密碼。也可以通過“Add User”新增其他使用者,新增其他使用者時,需要指定使用者名稱、允許該使用者名稱在哪臺/哪些主機上登入,還可以指定使用者角色等。此處暫不新增使用者,使用者管理在MySQL高階特性篇中講解。
步驟5:單擊“Next”(下一步)按鈕,開啟設定伺服器名稱視窗,如圖所示。該服務名會出現在Windows服務列表中,也可以在命令列視窗中使用該服務名進行啟動和停止服務。本書將服務名設定為“MySQL80”。如果希望開機自啟動服務,也可以勾選“Start the MySQL Server at System Startup”選項(推薦)。
下面是選擇以什麼方式執行服務?可以選擇“Standard System Account”(標準系統使用者)或者“Custom User”(自定義使用者)中的一個。這裡推薦前者。
步驟6:單擊“Next”(下一步)按鈕,開啟確認設定伺服器視窗,單擊“Execute”(執行)按鈕。
步驟7:完成配置,如圖所示。單擊“Finish”(完成)按鈕,即可完成伺服器的配置。
步驟8:如果還有其他產品需要配置,可以選擇其他產品,然後繼續配置。如果沒有,直接選擇“Next”(下一步),直接完成整個安裝和配置過程。
步驟9:結束安裝和配置。
2.5 配置MySQL8.0 環境變數
如果不配置MySQL環境變數,就不能在命令列直接輸入MySQL登入命令。下面說如何配置MySQL的環境變數:
步驟1:在桌面上右擊【此電腦】圖示,在彈出的快捷選單中選擇【屬性】選單命令。
步驟2:開啟【系統】視窗,單擊【高階系統設定】連結。
步驟3:開啟【系統屬性】對話方塊,選擇【高階】選項卡,然後單擊【環境變數】按鈕。
步驟4:開啟【環境變數】對話方塊,在系統變數列表中選擇path變數。
步驟5:單擊【編輯】按鈕,在【編輯環境變數】對話方塊中,將MySQL應用程式的bin目錄(C:\Program Files\MySQL\MySQL Server 8.0\bin)新增到變數值中,用分號將其與其他路徑分隔開。
步驟6:新增完成之後,單擊【確定】按鈕,這樣就完成了配置path變數的操作,然後就可以直接輸入MySQL命令來登入資料庫了。
2.6 MySQL5.7 版本的安裝、配置
- 安裝
此版本的安裝過程與上述過程除了版本號不同之外,其它環節都是相同的。所以這裡省略了MySQL5.7.34版本的安裝截圖。
- 配置
配置環節與MySQL8.0版本確有細微不同。大部分情況下直接選擇“Next”即可,不影響整理使用。
這裡配置MySQL5.7時,重點強調:與前面安裝好的MySQL8.0不能使用相同的埠號。
2.7 安裝失敗問題
MySQL的安裝和配置是一件非常簡單的事,但是在操作過程中也可能出現問題,特別是初學者。
問題1:無法開啟MySQL8.0軟體安裝包或者安裝過程中失敗,如何解決?
在執行MySQL8.0軟體安裝包之前,使用者需要確保系統中已經安裝了.Net Framework相關軟體,如果缺少此軟體,將不能正常地安裝MySQL8.0軟體。
解決方案:到這個地址https://www.microsoft.com/en-us/download/details.aspx?id=42642下載Microsoft .NET Framework 4.5並安裝後,再去安裝MySQL。
另外,還要確保Windows Installer正常安裝。windows上安裝mysql8.0需要作業系統提前已安裝好Microsoft Visual C++ 2015-2019。
解決方案同樣是,提前到微軟官網https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0,下載相應的環境。
問題2:解除安裝重灌MySQL失敗?
該問題通常是因為MySQL解除安裝時,沒有完全清除相關資訊導致的。
解決辦法是,把以前的安裝目錄刪除。如果之前安裝並未單獨指定過服務安裝目錄,則預設安裝目錄是“C:\Program Files\MySQL”,徹底刪除該目錄。同時刪除MySQL的Data目錄,如果之前安裝並未單獨指定過資料目錄,則預設安裝目錄是“C:\ProgramData\MySQL”,該目錄一般為隱藏目錄。刪除後,重新安裝即可。
問題3:如何在Windows系統刪除之前的未解除安裝乾淨的MySQL服務列表?
操作方法如下,在系統“搜尋框”中輸入“cmd”,按“Enter”(回車)鍵確認,彈出命令提示符介面。然後輸入“sc delete MySQL服務名”,按“Enter”(回車)鍵,就能徹底刪除殘餘的MySQL服務了。
3. MySQL的登入
3.1 服務的啟動與停止
MySQL安裝完畢之後,需要啟動伺服器程序,不然客戶端無法連線資料庫。
在前面的配置過程中,已經將MySQL安裝為Windows服務,並且勾選當Windows啟動、停止時,MySQL也自動啟動、停止。
方式1:使用圖形介面工具
-
步驟1:開啟windows服務
- 方式1:計算機(點選滑鼠右鍵)→ 管理(點選)→ 服務和應用程式(點選)→ 服務(點選)
- 方式2:控制面板(點選)→ 系統和安全(點選)→ 管理工具(點選)→ 服務(點選)
- 方式3:工作列(點選滑鼠右鍵)→ 啟動工作管理員(點選)→ 服務(點選)
- 方式4:單擊【開始】選單,在搜尋框中輸入“services.msc”,按Enter鍵確認
-
步驟2:找到MySQL80(點選滑鼠右鍵)→ 啟動或停止(點選)
方式2:使用命令列工具
# 啟動 MySQL 服務命令:
net start MySQL服務名
# 停止 MySQL 服務命令:
net stop MySQL服務名
說明:
-
start和stop後面的服務名應與之前配置時指定的服務名一致。
-
如果當你輸入命令後,提示“拒絕服務”,請以
系統管理員身份
開啟命令提示符介面重新嘗試。
3.2 自帶客戶端的登入與退出
當MySQL服務啟動完成後,便可以通過客戶端來登入MySQL資料庫。注意:確認服務是開啟的。
登入方式1:MySQL自帶客戶端
開始選單 → 所有程式 → MySQL → MySQL 8.0 Command Line Client
說明:僅限於root使用者
登入方式2:windows命令列
- 格式:
mysql -h 主機名 -P 埠號 -u 使用者名稱 -p密碼
- 舉例:
mysql -h localhost -P 3306 -u root -pabc123 # 這裡我設定的root使用者的密碼是abc123
注意:
(1)-p與密碼之間不能有空格,其他引數名與引數值之間可以有空格也可以沒有空格。如:
mysql -hlocalhost -P3306 -uroot -pabc123
(2)密碼建議在下一行輸入,保證安全
mysql -h localhost -P 3306 -u root -p
Enter password:****
(3)客戶端和伺服器在同一臺機器上,所以輸入localhost或者IP地址127.0.0.1。同時,因為是連線本機:
-hlocalhost就可以省略,如果埠號沒有修改:-P3306也可以省略
簡寫成:
mysql -u root -p
Enter password:****
連線成功後,有關於MySQL Server服務版本的資訊,還有第幾次連線的id標識。
也可以在命令列通過以下方式獲取MySQL Server服務版本的資訊:
c:\> mysql -V
c:\> mysql --version
或登入後,通過以下方式檢視當前版本資訊:
mysql> select version();
退出登入
exit
或
quit
4. MySQL演示使用
4.1 MySQL的使用演示
1、檢視所有的資料庫
show databases;
“information_schema”是 MySQL 系統自帶的資料庫,主要儲存 MySQL 資料庫伺服器的系統資訊,比如資料庫的名稱、資料表的名稱、欄位名稱、存取許可權、資料檔案 所在的資料夾和系統使用的資料夾,等等
“performance_schema”是 MySQL 系統自帶的資料庫,可以用來監控 MySQL 的各類效能指標。
“sys”資料庫是 MySQL 系統自帶的資料庫,主要作用是以一種更容易被理解的方式展示 MySQL 資料庫伺服器的各類效能指標,幫助系統管理員和開發人員監控 MySQL 的技術性能。
“mysql”資料庫儲存了 MySQL 資料庫伺服器執行時需要的系統資訊,比如資料資料夾、當前使用的字符集、約束檢查資訊,等等
為什麼 Workbench 裡面我們只能看到“demo”和“sys”這 2 個數據庫呢?
這是因為,Workbench 是圖形化的管理工具,主要面向開發人 員,“demo”和“sys”這 2 個數據庫已經夠用了。如果有特殊需求,比如,需要監控 MySQL 資料庫各項效能指標、直接操作 MySQL 資料庫系統檔案等,可以由 DBA 通過 SQL 語句,檢視其它的系統資料庫。
2、建立自己的資料庫
create database 資料庫名;
#建立atguigudb資料庫,該名稱不能與已經存在的資料庫重名。
create database atguigudb;
3、使用自己的資料庫
use 資料庫名;
#使用atguigudb資料庫
use atguigudb;
說明:如果沒有使用use語句,後面針對資料庫的操作也沒有加“資料名”的限定,那麼會報“ERROR 1046 (3D000): No database selected”(沒有選擇資料庫)
使用完use語句之後,如果接下來的SQL都是針對一個數據庫操作的,那就不用重複use了,如果要針對另一個數據庫操作,那麼要重新use。
4、檢視某個庫的所有表格
show tables; #要求前面有use語句
show tables from 資料庫名;
5、建立新的表格
create table 表名稱(
欄位名 資料型別,
欄位名 資料型別
);
說明:如果是最後一個欄位,後面就用加逗號,因為逗號的作用是分割每個欄位。
#建立學生表
create table student(
id int,
name varchar(20) #說名字最長不超過20個字元
);
6、檢視一個表的資料
select * from 資料庫表名稱;
#檢視學生表的資料
select * from student;
7、新增一條記錄
insert into 表名稱 values(值列表);
#新增兩條記錄到student表中
insert into student values(1,'張三');
insert into student values(2,'李四');
報錯:
mysql> insert into student values(1,'張三');
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1
mysql> insert into student values(2,'李四');
ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'name' at row 1
mysql> show create table student;
字符集的問題。
8、查看錶的建立資訊
show create table 表名稱\G
#檢視student表的詳細建立資訊
show create table student\G
#結果如下
*************************** 1. row ***************************
Table: student
Create Table: CREATE TABLE `student` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
上面的結果顯示student的表格的預設字符集是“latin1”不支援中文。
9、檢視資料庫的建立資訊
show create database 資料庫名\G
#檢視atguigudb資料庫的詳細建立資訊
show create database atguigudb\G
#結果如下
*************************** 1. row ***************************
Database: atguigudb
Create Database: CREATE DATABASE `atguigudb` /*!40100 DEFAULT CHARACTER SET latin1 */
1 row in set (0.00 sec)
上面的結果顯示atguigudb資料庫也不支援中文,字符集預設是latin1。
10、刪除表格
drop table 表名稱;
#刪除學生表
drop table student;
11、刪除資料庫
drop database 資料庫名;
#刪除atguigudb資料庫
drop database atguigudb;
4.2 MySQL的編碼設定
MySQL5.7中
問題再現:命令列操作sql亂碼問題
mysql> INSERT INTO t_stu VALUES(1,'張三','男');
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'sname' at row 1
問題解決
步驟1:檢視編碼命令
show variables like 'character_%';
show variables like 'collation_%';
步驟2:修改mysql的資料目錄下的my.ini配置檔案
[mysql] #大概在63行左右,在其下新增
...
default-character-set=utf8 #預設字符集
[mysqld] # 大概在76行左右,在其下新增
...
character-set-server=utf8
collation-server=utf8_general_ci
注意:建議修改配置檔案使用notepad++等高階文字編輯器,使用記事本等軟體開啟修改後可能會導致檔案編碼修改為“含BOM頭”的編碼,從而服務重啟失敗。
步驟3:重啟服務
步驟4:檢視編碼命令
show variables like 'character_%';
show variables like 'collation_%';
- 如果是以上配置就說明對了。接著我們就可以新建立資料庫、新建立資料表,接著新增包含中文的資料了。
MySQL8.0中
在MySQL 8.0版本之前,預設字符集為latin1,utf8字符集指向的是utf8mb3。網站開發人員在資料庫設計的時候往往會將編碼修改為utf8字符集。如果遺忘修改預設的編碼,就會出現亂碼的問題。從MySQL 8.0開始,資料庫的預設編碼改為utf8mb4
,從而避免了上述的亂碼問題。
5. MySQL圖形化管理工具
MySQL圖形化管理工具極大地方便了資料庫的操作與管理,常用的圖形化管理工具有:MySQL Workbench、phpMyAdmin、Navicat Preminum、MySQLDumper、SQLyog、dbeaver、MySQL ODBC Connector。
工具1. MySQL Workbench
MySQL官方提供的圖形化管理工具MySQL Workbench完全支援MySQL 5.0以上的版本。MySQL Workbench分為社群版和商業版,社群版完全免費,而商業版則是按年收費。
MySQL Workbench 為資料庫管理員、程式開發者和系統規劃師提供視覺化設計、模型建立、以及資料庫管理功能。它包含了用於建立複雜的資料建模ER模型,正向和逆向資料庫工程,也可以用於執行通常需要花費大量時間的、難以變更和管理的文件任務。
下載地址:http://dev.mysql.com/downloads/workbench/。
使用:
首先,我們點選 Windows 左下角的“開始”按鈕,如果你是 Win10 系統,可以直接看到所有程式。接著,找到“MySQL”,點開,找到“MySQL Workbench 8.0 CE”。點選開啟 Workbench,如下圖所示:
左下角有個本地連線,點選,錄入 Root 的密碼,登入本地 MySQL 資料庫伺服器,如下圖所示:
這是一個圖形化的介面,我來給你介紹下這個介面。
-
上方是選單。左上方是導航欄,這裡我們可以看到 MySQL 資料庫伺服器裡面的資料 庫,包括資料表、檢視、儲存過程和函式;左下方是資訊欄,可以顯示上方選中的資料 庫、資料表等物件的資訊。
-
中間上方是工作區,你可以在這裡寫 SQL 語句,點選上方選單欄左邊的第三個執行按 鈕,就可以執行工作區的 SQL 語句了。
-
中間下方是輸出區,用來顯示 SQL 語句的執行情況,包括什麼時間開始執行的、執行的 內容、執行的輸出,以及所花費的時長等資訊。
好了,下面我們就用 Workbench 實際建立一個數據庫,並且匯入一個 Excel 資料檔案, 來生成一個數據表。資料表是儲存資料的載體,有了資料表以後,我們就能對資料進行操作了。
工具2. Navicat
Navicat MySQL是一個強大的MySQL資料庫伺服器管理和開發工具。它可以與任何3.21或以上版本的MySQL一起工作,支援觸發器、儲存過程、函式、事件、檢視、管理使用者等,對於新手來說易學易用。其精心設計的圖形使用者介面(GUI)可以讓使用者用一種安全簡便的方式來快速方便地建立、組織、訪問和共享資訊。Navicat支援中文,有免費版本提供。
下載地址:http://www.navicat.com/。
工具3. SQLyog
SQLyog 是業界著名的 Webyog 公司出品的一款簡潔高效、功能強大的圖形化 MySQL 資料庫管理工具。這款工具是使用C++語言開發的。該工具可以方便地建立資料庫、表、檢視和索引等,還可以方便地進行插入、更新和刪除等操作,同時可以方便地進行資料庫、資料表的備份和還原。該工具不僅可以通過SQL檔案進行大量檔案的匯入和匯出,還可以匯入和匯出XML、HTML和CSV等多種格式的資料。
下載地址:http://www.webyog.com/,讀者也可以搜尋中文版的下載地址。
工具4:dbeaver
DBeaver是一個通用的資料庫管理工具和 SQL 客戶端,支援所有流行的資料庫:MySQL、PostgreSQL、SQLite、Oracle、DB2、SQL Server、 Sybase、MS Access、Teradata、 Firebird、Apache Hive、Phoenix、Presto等。DBeaver比大多數的SQL管理工具要輕量,而且支援中文介面。DBeaver社群版作為一個免費開源的產品,和其他類似的軟體相比,在功能和易用性上都毫不遜色。
唯一需要注意是 DBeaver 是用Java程式語言開發的,所以需要擁有 JDK(Java Development ToolKit)環境。如果電腦上沒有JDK,在選擇安裝DBeaver元件時,勾選“Include Java”即可。
下載地址:https://dbeaver.io/download/
可能出現連線問題:
有些圖形介面工具,特別是舊版本的圖形介面工具,在連線MySQL8時出現“Authentication plugin 'caching_sha2_password' cannot be loaded”錯誤。
出現這個原因是MySQL8之前的版本中加密規則是mysql_native_password,而在MySQL8之後,加密規則是caching_sha2_password。解決問題方法有兩種,第一種是升級圖形介面工具版本,第二種是把MySQL8使用者登入密碼加密規則還原成mysql_native_password。
第二種解決方案如下,用命令列登入MySQL資料庫之後,執行如下命令修改使用者密碼加密規則並更新使用者密碼,這裡修改使用者名稱為“root@localhost”的使用者密碼規則為“mysql_native_password”,密碼值為“123456”,如圖所示。
#使用mysql資料庫
USE mysql;
#修改'root'@'localhost'使用者的密碼規則和密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'abc123';
#重新整理許可權
FLUSH PRIVILEGES;
6. MySQL目錄結構與原始碼
6.1 主要目錄結構
MySQL的目錄結構 | 說明 |
---|---|
bin目錄 | 所有MySQL的可執行檔案。如:mysql.exe |
MySQLInstanceConfig.exe | 資料庫的配置嚮導,在安裝時出現的內容 |
data目錄 | 系統資料庫所在的目錄 |
my.ini檔案 | MySQL的主要配置檔案 |
c:\ProgramData\MySQL\MySQL Server 8.0\data\ | 使用者建立的資料庫所在的目錄 |
6.2 MySQL 原始碼獲取
首先,你要進入 MySQL下載介面。 這裡你不要選擇用預設的“Microsoft Windows”,而是要通過下拉欄,找到“Source Code”,在下面的作業系統版本里面, 選擇 Windows(Architecture Independent),然後點選下載。
接下來,把下載下來的壓縮檔案解壓,我們就得到了 MySQL 的原始碼。
MySQL 是用 C++ 開發而成的,我簡單介紹一下原始碼的組成。
mysql-8.0.22 目錄下的各個子目錄,包含了 MySQL 各部分元件的原始碼:
-
sql 子目錄是 MySQL 核心程式碼;
-
libmysql 子目錄是客戶端程式 API;
-
mysql-test 子目錄是測試工具;
-
mysys 子目錄是作業系統相關函式和輔助函式;
原始碼可以用記事本開啟檢視,如果你有 C++ 的開發環境,也可以在開發環境中開啟檢視。
如上圖所示,原始碼並不神祕,就是普通的 C++ 程式碼,跟你熟悉的一樣,而且有很多註釋,可以幫助你理解。閱讀原始碼就像在跟 MySQL 的開發人員對話一樣,十分有趣。
7. 常見問題的解決(課外內容)
問題1:root使用者密碼忘記,重置的操作
1: 通過工作管理員或者服務管理,關掉mysqld(服務程序)
2: 通過命令列+特殊引數開啟mysqld
mysqld --defaults-file="D:\ProgramFiles\mysql\MySQLServer5.7Data\my.ini" --skip-grant-tables
3: 此時,mysqld服務程序已經開啟。並且不需要許可權檢查
4: mysql -uroot 無密碼登陸伺服器。另啟動一個客戶端進行
5: 修改許可權表
(1) use mysql;
(2)update user set authentication_string=password('新密碼') where user='root' and Host='localhost';
(3)flush privileges;
6: 通過工作管理員,關掉mysqld服務程序。
7: 再次通過服務管理,開啟mysql服務。
8: 即可用修改後的新密碼登陸。
問題2:mysql命令報“不是內部或外部命令”
如果輸入mysql命令報“不是內部或外部命令”,把mysql安裝目錄的bin目錄配置到環境變數path中。如下:
問題3:錯誤ERROR :沒有選擇資料庫就操作表格和資料
ERROR 1046 (3D000): No database selected |
---|
解決方案一:就是使用“USE 資料庫名;”語句,這樣接下來的語句就預設針對這個資料庫進行操作 |
解決方案二:就是所有的表物件前面都加上“資料庫.” |
問題4:命令列客戶端的字符集問題
mysql> INSERT INTO t_stu VALUES(1,'張三','男');
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'sname' at row 1
原因:伺服器端認為你的客戶端的字符集是utf-8,而實際上你的客戶端的字符集是GBK。
檢視所有字符集:SHOW VARIABLES LIKE 'character_set_%';
解決方案,設定當前連線的客戶端字符集 “SET NAMES GBK;”
問題5:修改資料庫和表的字元編碼
修改編碼:
(1)先停止服務,(2)修改my.ini檔案(3)重新啟動服務
說明:
如果是在修改my.ini之前建的庫和表,那麼庫和表的編碼還是原來的Latin1,要麼刪了重建,要麼使用alter語句修改編碼。
mysql> create database 0728db charset Latin1;
Query OK, 1 row affected (0.00 sec)
mysql> use 0728db;
Database changed
mysql> create table student (id int , name varchar(20)) charset Latin1;
Query OK, 0 rows affected (0.02 sec)
mysql> show create table student\G
*************************** 1. row ***************************
Table: student
Create Table: CREATE TABLE `student` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql> alter table student charset utf8; #修改表字符編碼為UTF8
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table student\G
*************************** 1. row ***************************
Table: student
Create Table: CREATE TABLE `student` (
`id` int(11) NOT NULL,
`name` varchar(20) CHARACTER SET latin1 DEFAULT NULL, #欄位仍然是latin1編碼
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> alter table student modify name varchar(20) charset utf8; #修改欄位字元編碼為UTF8
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table student\G
*************************** 1. row ***************************
Table: student
Create Table: CREATE TABLE `student` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> show create database 0728db;;
+--------+-----------------------------------------------------------------+
|Database| Create Database |
+------+-------------------------------------------------------------------+
|0728db| CREATE DATABASE `0728db` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> alter database 0728db charset utf8; #修改資料庫的字元編碼為utf8
Query OK, 1 row affected (0.00 sec)
mysql> show create database 0728db;
+--------+-----------------------------------------------------------------+
|Database| Create Database |
+--------+-----------------------------------------------------------------+
| 0728db | CREATE DATABASE `0728db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+--------+-----------------------------------------------------------------+
1 row in set (0.00 sec)