mysql精簡單機版,免登錄,可複製,不啟動服務,與本機mysql無衝突 ...
突然有了個需要在本地使用的mysql需求,要求不用安裝,隨拷隨用,不影響其他mysql服務,占用空間小.基於這種需求做了個精簡版的mysql
首先下載mysql的zip安裝包
windows 64位 https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.36-winx64.zip
windows 32位 https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.36.zip
建議32位和64位按系統下載,實測不同位對動態鏈接庫的需求區別還是比較大.32位並不一定可以在64位下運行.
將需要的版本壓縮包解壓
解壓後刪除docs,include文件夾,對於bin目錄下的.pdb文件,和一些用不到的輔助程式都可以刪除.
最後bin目錄如下
lib目錄如下
share目錄如下
share目錄除各個國家的語言之外sql腳本不要輕易刪除,而且這個目錄中的sql在初始化時會使用,占用空間都不大。
文件處理完成之後整個文件夾大小在100M左右,壓縮後能到40M左右
編寫my.ini配置文件
[mysqld] # 設置13307埠 port = 13307 # 允許最大連接數 max_connections=200 # 服務端使用utf8符集 character-set-server=utf8 # 創建新表時將使用INNODB存儲引擎 default-storage-engine=INNODB #綁定127.0.0.1地址,最後是以skip-grant-tables模式啟動,限制本地連接,增加安全性
bind-address=127.0.0.1
編寫啟動腳本setup.bat
@echo off
rem simple mysql.5.7.35 win32
copy "C:\Windows\system32\msvcr120.dll" %~dp0bin
copy "C:\Windows\system32\msvcp120.dll" %~dp0bin
if not exist "%~dp0data" md "%~dp0data"
if not exist "%~dp0data\ibdata1" (
%~dp0bin\mysqld.exe --initialize --console
xcopy %~dp0template_data %~dp0data /s /f /h /q /e /y
)
start /b %~dp0bin\mysqld.exe --defaults-file=%~dp0my.ini --skip-grant-tables --shared-memory
echo 'mysqld server is running...'
最終目錄
腳本說明
1.template_data和bin同級別,此文件夾存儲複製過來的schema,註意複製的時候需要把ibdata1文件也複製過來
2.之所以複製msvcr120.dll和msvcp120.dll 因為在windows7系統中可能在運行32位/64位程式時會提示這兩個dll文件缺失(其實並沒有缺失,只是沒有找到)
3.因為使用的是innodb引擎,所以mysql的數據表複製時是需要ibdata1文件的(innodb引擎下將表結構存儲在ibdata1文件中,myisam則不用),因此以data文件夾下是否存在ibdata1文件來判斷mysql是否被初始化,若沒有初始化,則進行mysqld初始化,然後將tempalte_data文件夾中的所有文件都複製到data文件夾下
4.加入--skip-grant-tables,有了這個參數,本機可以直接進入mysql,而不用管用戶名密碼是多少.因為初始化之後系統會生成一個複雜密碼,這個用腳本修改挺麻煩的,所以就直接跳過許可權表的載入了,
啟動
直接雙擊setup.bat就行,建議不要在C盤進行上述操作,C盤可能需要管理員許可權。
經測試一般的增刪查改功能都能正常使用,mysql,navicat,jdbc都可以正常連接和使用。