MySQL圖像化管理工具、源碼獲取及常見問題的解決
5.MySQL圖像化管理工具
MySQL圖像化管理工具極大的方便了數據庫的操作與管理,常用的圖形化管理工具有:MySQL Workbench、phpMyAdmin、Navicat Preminum、MySQLDumper、SQLyog、dbeaver、MySQL ODBC Connector。
工具1.MySQL Workbench
MySQL官方提供的圖形化管理工具MySQL Workbench完全支持MySQL5.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支持中文,有免費版本提供。


工具3.SQLyog
SQLyog是業界著名的Webyog公司出品的一款簡介高效,功能強大的圖形化MwSQL數據庫管理工具。這款工具是使用C++語言開發的。該工具可以方便地創建數據庫、表、視圖和索引等,還可以方便地進行插入、更新和刪除等操作,同時可以方便地進行數據庫、數據表的備份和還原。該工具不僅可以通過SQL文件進行發亮文件的導入和導出XML、HTML和CSV等多種格式的數據。
下載地址:http://www.webyog.com/
讀者也可以搜索中文版的下載記錄。


工具四: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環境。如果電腦上沒有JDK,在選擇安裝DBeaver組件時,勾選“Include Java”即可。
下載地址:http://dbeaver.io/download/

可能出現的連接問題:
錯誤號碼2058:
Plugin caching_sha2_password could not be loaded

出現這個問題原因是MySQL 8執勤的版本加密規則是mysql_native_password,而在MySQL 8之后,加密規則是caching_sha2_password。解決文職方法有兩種,第一種是升級圖形界面工具版本,第二種就是把MySQL 8用戶登錄密碼加密規則還原成mysql_native_password。
第二種解決方法如下,用命令行登錄MySQL8.0數據庫之后,執行如下命令,修改用戶密碼規則并更新用戶登錄密碼,這里修改用戶名為'root'@'localhost'的用戶密碼規則為mysql_native_password,密碼值為你的密碼,如圖所示
mysql> Use mysql
Database changed
mysql> AlTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼'
-> ;
Query OK, 0 rows affected (0.71 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.29 sec)
6.MySQL目錄結構與源碼
6.1主要目錄結構
| MySQL的目錄結構 | 說明 |
|---|---|
| bin目錄 | 所有MySQL的可執行文件。如:mysql.exe |
| MySQLInstanceConfig.exe | 數據庫的配置向導,在安裝時出現的內容 |
| data目錄 | 系統數據庫所在目錄 |
| my.ini文件 | MySQL的主要配置文件 |
| c:\ProgramData\MySQL\MySQL server8.0\data\ | 用戶創建的數據庫所在的目錄 |
6.2MySQL源代碼獲取
首先,你要進入MySQL下載界面。這里你不要選擇用默認的“Microsoft Windows”,而是要通過下拉欄,找到“Source Code”,在下面的操作系統版本里面,選擇Windows(Architecture Independent),然后點擊下載。接下來,把下載下來的壓縮文件壓縮,我們就得到了MySQL的源代碼。
下載地址:https://dev.mysql.com/downloads/mysql/

MySQL是用C++開發而成的,我簡單介紹一下源代碼的組成。
mysql-8.0.22目錄下的各個子目錄,包含了MySQL各部分組件的源代碼:
- sql子目錄是MySQL核心代碼;
- libmysql子目錄是客戶端程序API;
- mysql-test子目錄是測試工具;
- mysys子目錄是操作系統相關函數和輔助函數;
源代碼可以使用記事本打開查看,如果你有C++的開發環境,它也可以在開發環境中換打開查看。

如上圖所示,源代碼并不神秘,就是普通的C++代碼,跟你熟悉的一樣,而且有很多注釋,可以幫助你理解。閱讀源代碼就像在跟MySQL的開發人員對話一樣,十分有趣。
7.常見問題的解決
問題一:root用戶密碼忘記,重置的操作。
1.通過任務管理器或者服務管理,關掉mysqlId(服務進程)
2.通過命令行+特殊參數開啟mysqlId
mysql --defaults-file=“C:\ProgramData\MySQL\MySQL Server 5.7\my.ini” --skip-grant-tables
3.此時,mysql服務進程已經打開,并且不需要權限檢查
4.mysql -uroot 無密碼登錄服務器。另啟動一個客戶端進行
5.修改權限表
? (1)use mysql;
? (2)update user set authentication_string=password('新密碼') where use ='root' and Host='localhost';
? (3)flush privileges;
6.通過任務管理器,關掉mysql服務進程。
7.再次通過服務管理,打開mysql服務
8.即可用修改后的新密碼登錄
問題二:mysql命令報”不是內部或外部命令“
如果輸入mysql命令報”不是內部或外部命令“,把mysql安裝目錄配置到環境變量path中。如下:

問題三:錯誤ERROR:沒有選擇數據庫就操作表格和數據
| REEOR 1046(3D000):NO database selected |
|---|
| 解決方案一:就是使用“USE”數據庫名;“語句,這樣接下來的語句就默認針對這個數據庫進行操作 |
| 解決方案二:就是所有的表對象前面都加上”數據庫“ |
問題四:命令客戶端的字符集問題
mysql> insert into employees values(1003,'杰瑞');
ERROR 1366 (HY000): Incorrect string value: '\xBD\xDC\xC8\xF0' for column 'sname' at row 1
原因:服務器端認為i你的客戶端的字符集是utf-8,而實際上你的客戶端的字符集是GBK。

show variables like 'character_set_%';

解決方案:設置當前連接的客戶端字符集”SET NAME GBK“

問題5:修改數據庫和表的字符編碼
修改編碼:
(1)先停止服務,(2)修改my.ini文件(3)重新啟動服務
說明:
如果是在修改my.ini之前創建的表,那么庫和表的編碼還是原來的Latin1,要么刪掉重建,要么使用alter語句修改編碼。
mysql> create database 0728bd charset Latin1;
Query OK, 0 rows affected (0.29 sec)


習題
第一章


第二章




浙公網安備 33010602011771號