MySQL8.x 安裝

      在〈MySQL8.x 安裝〉中尚無留言

本章介紹如何在Windows下獨立安裝MySQL Server端程式。如果要在 Linux 下安裝 MySQL,請參考 ubuntu mysql 這篇說明。

Windows 下安裝 MySQL 雖沒什麼問題,但如果資料庫筆數太多 (比如超過百萬筆),效能就變差了,甚至會有開機無法自動啟動 MySQL 的 bug,故建議使用 Linux 來安裝 MySQL。

版本說明

MySQL 有三個版本,分別是 8.0.x、8.4.x、9.1.x,說明如下

8.0.x : 適用於 Windows 及 Linux,支援最廣泛的版本

8.4.x : LTS 版本(Long Time Support,長期支援),保証 8 年內會一直修護其中的 bug ,但不會增加新的功能,適用於 Windows 及 Linux。不過 Linux 到目前(2024/12/01) 還是無法使用 sudo apt intall 進行安裝。

9.1.x : Innovation (創新) 版,不定時的增加新的功能。適用於 Windows 及 Linux ,同樣在 Linux 無法使用 sudo apt install 進行安裝。說白了就是白老鼠試驗版啦,如果你很先進也吃飽沒事幹,那可以玩看看。

總結 : 安裝 8.0.x 就對了。不過想安裝 8.4.x 也沒問題啦

安裝環境

MySQL 安裝分為 Server 及 Client 二部份。Server 端是指隱藏在背後執行,隨時提供連線服數的常駐程式。 Client 端是指在前端供使用者操作的 UI 介面,比如 Workbench。

如果作業系統是 Windows , 請確定一定要在 Windows 10 及以上, Winwos 7 是無法安裝的。

然後要先安裝 Python 3.8.10 以上,建議是 Python3.12.3 ,網址如下https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe

MySQL Server 8.0.x 下載安裝

MySQL 其實有四個版本
Community : free
Cluster : 叢集, 應該是要錢的
Enterprise : 企業版, 聽說一年是U$599
Embedded : free

MySQL Community 到 2023 年 7 月已發展到了 8.0.34 版,另外還有一個 8.1.0 Innovation創新版。

建議選擇 8.0.34  Community 版,此版跟 Enterprise 都是一樣的,只是 Community 無法取得原廠的技術協助。

MySQL Community 下載網址 : https://dev.mysql.com/downloads/mysql/ ,然後在 “Select Version”  選取 8.0.34。

下圖有二種安裝方式,第一個是透過網路安裝,第二個是下載離線安裝,所以請選第二個。

下面是要求登入,請直接按下 “No thanks, just start my download.”

mysql_download3

開始安裝

安裝時, 選取 Full 選項

然後再執行 Execute

安裝時要一段時間,尤其是在安裝 MySQL Shell 時,需比較久的時間。接下來的畫面都按 “Next”,並請注意不要亂動原本的設定。

到了 “Accounts and Roles” 畫面,請先設定 root 的密碼。因為 root 是最高權限,必需使用高強度密碼。
root 只能在本地端登入(localhost),不可透過網路登路。所以請再按下方的 Add user,新增一個可以透過網路登入的帳號。

mysql_password1

輸入新的使用者帳號及密碼,如果忘了帳號及密碼,是會被抓去槍斃的。到目前的功力,如果忘了帳密,最快解決方式就是移除 MySQL,再重新安裝。

mysql_password2

接下來的畫面,不是 “Next”,就是 “Execute” 或 “Finish”。

到 “Connect To Server” 畫面時,在 “Password” 輸入剛剛設定的 root 密碼,然後按下Check, 連線成功後,再按下 “Next”。

接下來,還是按 “Next”, “Exectue”,或 “Finish”。到最後會自動開啟 DOS 視窗及 Workbench,請把 DOS 視窗直接關掉。

路徑設定

mysql 常用的指令都在 c:\Program Files/MySQL/MySQL Server 8.0\bin 之下,如 mysql, mysqldump等。所以需手動設定 系統環境變數 path。

請由 “開始按右鍵/系統/進階系統設定/環境變數”,然後在系統變數選 path,再按編輯,新增如下路徑。

新增完後,請記得重新開啟 DOS 提示視窗。

C:\Program Files\MySQL\MySQL Server 8.0\bin

使用Workbench

操作資料庫的方式,可以在 DOS 命令模式、phpMyAdmin 或 Workbench。phpMyAdmin 超級難用的,所以建議使用 Workbench。請在 “開始/MySQL/MySQL Workbench 8.0 CE” 按一下,開啟 Workbench。

Workbench 預設可以使用 root 登入,但 root 是緊急救援用的,到目前為止絕對禁止使用 root 登入。請由下圖的 “+” 新增連線登入資料庫。

然後在如下地方輸入相關資訊

Connection Name : localhost
Hostname : localhost
Username : 安裝MySQL時所新增的 “帳號”
Store in Valut…: 安裝MySQL時,新增帳號的 “密碼”
最後再按 “OK”

最後在新增的 localhost 按一下,登入資料庫

登入後,按下 “Schemas” 切換到資料庫,然後再按下右上角的二個按鈕,把右邊及下邊的視窗關掉。

新增帳號及權限

若要新增其它使用者的帳號,則必需使 root 登入。請開啟 Workbench,由 root 帳號登入,然後按下左上角的 “SQL” 按鈕, 輸入如下指令,再按下 “閃電” 按鈕執行。

use mysql;
create user '帳號'@'%' identified by '密碼';
grant all privileges on *.* to '帳號'@'%';

唯讀權限

唯讀權限只能讀取,不能寫入,指令如下。

use mysql;
grant select on cloud.* to '帳號'@'%'

#刪除帳號
drop user 帳號

刪除帳號

刪除帳號只要使用 drop 即可,如下

use mysql;
drop user 帳號;

變更帳號密碼

變更帳號的密碼指令如下

use mysql;
set password for 'root'@'localhost'='1234';
set password for '帳號'@'%'='1234';

請注意,現在密碼都有加密了,所以不能使用底下的方法

update user set password='1234' where user='root'

變更MySQL資料庫目錄

MySQL8.0 資料庫預設目錄為 C:\ProgramData\MySQL\MySQL Server 8.0\Data.

要變更此目錄需操作如下步驟

1. 使用系統管理員身份進入Console mode, 執行如下命令

net stop mysql80

2. 修改 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
更改為
datadir=D:/server/mysql

3. 將C:/ProgramData/MySQL/MySQL Server 8.0/Data 目錄 copy 到 d:/server/之下,並把 Data目錄改為 mysql。

4. 重啟mysql

net start mysql80

備份

備份資料庫的指令如下

mysqldump -u 帳號 -p --routines 資料庫名 > outputfile.sql

還原

首先使用 workbench 產生一個新的資料庫。請注意資料庫的語系必需為 utf8/utf8_unicode_ci.

然後在 DOS 命令視窗使用如下指令還原資料庫

mysql -u 帳號 -p --default-character-set=utf8 資料庫名 < outputifle.sql

Linux 與 Windows 轉換

但如果在Linux備份, 然後在Windows下還原, 有可能會報ERROR 1064(42000)的語法錯誤. 這其中的一個原因是匯出的預設編碼跟匯入的預設編碼不一樣所致.  此時就要加入 –default-character-set=utf8 (最好mysqldump時也一併加入)

另外如果資料庫太大,在還原時會產生連線逾時的錯誤,請更改my.ini 如下設定

[wampmysqld64]
max_allowed_packet = 5000M

中英文資料庫/資料表

在建立資料庫時,切記資料庫名不可以使用中文但建立資料表時則可以使用中文

建立資料庫時,其實就是新增一個目錄,而建立資料表時,則是建立一個檔案。若使用中文時,建立在硬碟的目錄或檔案會被轉成 utf-8 的文字碼,如”@5eab@5b58@7ba1@7406@54e1.ibd”。

好,問題來了,備份資料表 mysqldump -u 帳號 -p 資料庫名 > output.sql,這個資料庫名被轉成了 utf-8 碼,是要怎麼打啊!! 所以資料庫名絕對不能使用中文。

但為什麼資料表又可以使用中文呢!! 因為在備份後,系統自動去抓那些 utf-8 的檔案,不需要我們手動去打字,所以沒關係。

使用 DOS 登入與登出

請在 Console Mode(DOS) 執行 mysql -u 帳號 -p。
登入成功後, 會出現 “mysql>” 提示符號。輸入 exit 即可登出。

c:\>mysql -u 帳號 -p
mysql>exit;

Workbench中文化

workbench是一套很好用的資料庫操作介面,只可惜沒有中文版。網路上找到的,也都是大陸人漢化的簡体版。
另網路上也有教人從Edit/Preference/Apperance,再更改為Simplfied Chinese,這都是沒用的。

要中文化,需打開 C:\Program Files\MySQL\MySQL Workbench 8.0 CE\data 底下的main_menu.xml, 然後進行更改,比如把下面的那一段改掉

<value type="string" key="caption">_File</value>
改成
<value type="string" key="caption">檔案(_F)</value>

儲存後,重新啟動workbench即可看到結果了。

常見問題

 中文亂碼

請參加本站另一篇說明 :  MySQL中文亂碼

資料表引擎

MyISAM將資料表分成三個檔, 查詢速度快, 但功能少, 不能roll back
InnoDB是新型技術, 只有一個檔, 但支援的功能多. 其實依目前狀況來看, 建議直接選用InnoDB.

日期格式

使用 date or datetime格式,日後方便使用日期查詢

效能調校

幾個常見的設定, 可讓MySQL效能加速,

在ubuntu下請更改 /etc/mysql/mysql.conf.d/mysqld.cnf
若在Windows下, 請更改C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

更改完後,重新啟動mysql
ubuntu : sudo service mysql restart
Windows : net stop mysql80/net start mysql80

innodb_log_buffer_size = 128M
innodb_log_file_size = 128M
innodb_autoextend_increment = 1000
innodb_flush_log_at_trx_commit = 0 #加速效能很有效
max_allowed_packet = 1024M #查詢過久斷線解決方式(Lost connection while query)
skip-log-bin #取消 binary logging
innodb_buffer_pool_size=4G #緩衝區, 可大輻減少磁碟負載, 而且可加速查詢效能, 尤其是在select count(*),但設太大會造成開機時無法自動啟動。
key_buffer_size = 64M
[mysql]
default-character-set = utf8
character_set_server = utf8

binary loggin

binary loggin會一直讀寫硬碟. 造成硬碟負載過大, 所以在系統調校穩定後, 最好把這個設定取消.
在Linux之下, 只要在mysqld.cnf 加入 skip-log-bin即可.
但在Windows下, my.ini的設定中,  需先把 log-bin=”xxx” 刪除, 然後加為 skip-log-bin

#log-bin="DESKTOP-D35ACP3-bin"
skip-log-bin

相容php7.2

php7.2不認得MySql 8.0 的認証及字元碼, 所以必需更改 /etc/mysql/mysql.conf.d/mysql.cnf

[mysqld]
pid-file  = /var/run/mysqld/mysqld.pid
socket    = /var/run/mysqld/mysqld.sock
datadir   = /var/lib/mysql
log-error = /var/log/mysql/error.log
default_authentication_plugin=mysql_native_password
character_set_server = utf8

然後要登入mysql 8.0 修改帳號

ALTER USER '帳號'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';

儲存後, 重啟mysql : service mysql restart

安全更新

新版MySQL在更新刪除時,如果條件所使用的欄位非索引鍵時,就會出現安全更新的問題。此時需把SQL_SAFE_UPDATES設為0 (關勢),待更新刪除完畢後,再設為 1(打開)。

SET SQL_SAFE_UPDATES=0;
update table set field1=value where condition;
SET SQL_SAFE_UPDATES=1;

移除MySQL

mysql installer也可以移除MySQL. 但 mysql  for visual studio 1.2.8 無法移除, 這個是官方認定的已知issue, 要移除這個, 可以使用geek這套軟体. 下載解壓縮後, 直接執行 geek.exe,然後在 mysql for visual studio 按右鍵/強制移除 即可.

geek 下載

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *