下载 mysql 压缩包,解压缩,然后在根目录下创建下面 2 个文件,然后运行 startConsole.bat 即可
- 默认无密码,需要密码的话修改初始化参数为
--initialize - 修改
my.ini中的路径为绝对路径
startConsole.bat
可以修改启动参数将路径值,传入,可以见 ps1 脚本 ,有空再改
@echo off
REM 设置 局部环境变量 ,set 的变量仅脚本内有效,脚本退出恢复原值
setlocal
REM %0 当前脚本路径, %~dp0 从当前路径中取 driver+path, /d 为允许切至不同盘符
cd /d "%~dp0"
REM 检查配置文件是否存在,
REM 如果文件不存在,exit /b 1 不关闭窗口,并设置错误代码为 1
if not exist "my.ini" (
echo ERROR: my.ini not found!
pause
exit /b 1
)
REM 如果 data 目录不存在,则初始化
REM 如果再次初始化, 则删除当前目录下的 data 子目录
REM --initialize-insecure 指定本地开发模式,root 无密码 , 也可使用 --initialize 生成随机密码(密码在日志文件中查看)
REM --user=mysql 运行程序的账号,win 下忽略
REM if errorlevel 1 当 errorlevel >= 1 时,退出
if not exist "data" (
echo [INFO] Initializing MySQL data directory...
bin\mysqld --defaults-file=my.ini --initialize-insecure --user=mysql
if errorlevel 1 (
echo [ERROR] Initialization failed!
pause
exit /b 1
)
echo [INFO] Initialization completed.
)
REM 启动 MySQL(必须指定 --defaults-file)
REM --console 日志输出至当前控制台,而不是后台
echo [INFO] Starting MySQL server on port 3307...
bin\mysqld --defaults-file=my.ini --console
pause
startConsole.ps1
# 启动开发使用的 mysql 服务
# 需要在当前目录下有 my.ini 配置文件
# 不需要修改 my.ini 中的 basedir 和 datadir 路径,脚本会自动覆盖
# 调用 pwsh start.ps1
# mysqld 启用时 --defaults-file="$config" 参数要放在第一位,否则会报错
$root = $PSScriptRoot
write-Host "MySQL 服务根目录: $root" -ForegroundColor Cyan
$config = Join-Path $root -ChildPath 'my.ini'
if(-not (Test-Path $config)){
Write-Host "配置文件 my.ini 不存在,请检查 $config 路径是否正确。" -ForegroundColor Red
exit 1
}
$basedir = $root
$datadir = Join-Path $root -ChildPath 'data'
$logpath = Join-Path $datadir -ChildPath 'mysqld.log'
# 修改 my.ini 中的 basedir 和 datadir 路径
# (Get-Content $config) | ForEach-Object {
# $_ -replace '^(basedir\s*=\s*).+$', "`$1$basedir" `
# -replace '^(datadir\s*=\s*).+$', "`$1$datadir"
# } | Set-Content $config
$mysqldApp = Join-Path $basedir -ChildPath 'bin\mysqld'
if(-not (Test-Path $mysqldApp)){
Write-Host "mysqld 不存在,请检查 $mysqldApp 路径是否正确。" -ForegroundColor Red
exit 1
}
# 判断 data 目录是否存在, 如果不存在则初始化 mysql
if(-not (Test-Path $datadir)){
Write-Host "数据目录不存在,正在初始化 MySQL 数据目录..." -ForegroundColor Yellow
& $mysqldApp --defaults-file="$config" --initialize-insecure --basedir="$basedir" --datadir="$datadir" --log-error="$logpath"
if($LASTEXITCODE -ne 0){
Write-Host "MySQL 数据目录初始化失败,请检查错误信息。" -ForegroundColor Red
exit 1
}
Write-Host "MySQL 数据目录初始化完成。" -ForegroundColor Green
}
# 启动 mysql 服务
Write-Host "启动 MySQL 服务..." -ForegroundColor Yellow
& $mysqldApp --defaults-file="$config" --basedir="$basedir" --datadir="$datadir" --log-error="$logpath" --console
if($LASTEXITCODE -ne 0){
Write-Host "MySQL 服务启动失败,请检查错误信息。" -ForegroundColor Red
exit 1
}
my.ini
# 连接字符串, allowPublicKeyRetrieval 为未开启 SSL 时接受服务端的公钥,开发时使用
# jdbc:mysql://localhost:3307/?user=root&password=&useSSL=false&allowPublicKeyRetrieval=true
[mysqld]
# 核心:指定当前实例的完整路径(使用正斜杠)
basedir = D:/Apps/mysql/
datadir = D:/Apps/mysql/data
# 日志(必须指定,避免默认路径权限问题)
log-error = D:/Apps/mysql/data/mysqld.log
# 端口
port = 3307
# 字符集(统一用 utf8mb4)
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 存储引擎
default-storage-engine = INNODB
# 最大连接数
max_connections = 1000
# 屏蔽前最大允许出错次数, FLUSH HOSTS; 清空
max_connect_errors = 10
# 因为仅进行开发,所以这里禁用日志功能
skip-log-bin
ubuntu
ubuntu 下与 windows 一样处理,但是可能会提示错误缺少
libaio.so.1
因为高版本的 libaio 库已经更名
# 是否安装 libaio.so.*
ldconfig -p | grep libaio
# 进行安装,
sudo apt-get install libaio*
# 找到已经安装的版本
sudo updatedb
locate libaio.so
# 列出已经安装的库,发现最后指向新版本 `libaio.so.1t64.0.2 `
ls -l /usr/lib/x86_64-linux-gnu/libaio*
# 为 `libaio.so.1` 创建一个软链接
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 /usr/lib/x86_64-linux-gnu/libaio.so.1
# 再次执行 mysqld