当前位置: 首页 > article >正文

windows10使用bat脚本安装前后端环境之msyql5.7安装配置并重置用户密码

首先需要搞清楚msyql在本地是怎么安装配置、然后在根据如下步骤编写bat脚本:

思路

1.下载mysql5.7 zip格式安装包
2.新增data文件夹与my.ini配置文件
3.初始化数据库
4.安装mysql windows服务
5.启动并修改root密码(新增用户初始化授予权限)
6.新增数据库

在这里插入图片描述
my.ini 文件:

[client]
port=13306
[mysql]
default-character-set=utf8
[mysqld]
basedir=C:\other\mysql-5.7.42
datadir=C:\mysql-5.7.42\data
port=13306
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB

bat脚本

@echo off
echo windows10 x64 server Mysql init
REM 请求管理员权限并隐藏窗口
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 :: & echo 执行中,请稍候... & timeout 2 > nul","","runas",0)(window.close)&&exit
setlocal enabledelayedexpansion

rem 设置 Mysql 目录变量,方便后续引用和修改
set ServiceName=MySQL57_LINSN

%~d0
cd %~dp0
set CURRENT_DIR=%~dp0
set CURRENT_DIR=%CURRENT_DIR:~0,-1%

set NEW_BASEDIR=%CURRENT_DIR%\mysql-5.7.42
set NEW_DATADIR=%CURRENT_DIR%\mysql-5.7.42\data
set MY_INI_PATH=%CURRENT_DIR%\mysql-5.7.42\my.ini

rem 创建一个临时文件用于存储更新后的配置
set TMP_FILE=%MY_INI_PATH%.tmp

rem 删除临时文件,如果它已经存在
if exist "%TMP_FILE%" del "%TMP_FILE%"

echo query %ServiceName% state info ...
sc query "%ServiceName%" >nul 2>&1
if %errorLevel% equ 0 (
    rem 服务存在,检查服务状态
    for /f "tokens=2 delims=: " %%a in ('sc query "%ServiceName%" ^| find "STATE"') do (
        if /i "%%a" equ "RUNNING" (
            echo Mysql server state is RUNNING...
        ) else if /i "%%a" equ "STOPPED" (
            echo Mysql server state is STOPPED...
            net start %ServiceName% 
        ) else (
			echo Mysql server state is %%a...
        )
    )
) else (
	rem 读取原始的my.ini并更新basedir和datadir。这里的循环就是更新了,更新的逻辑是如果看到配置文件中的一行以 basedir= 开头,我们就更新
	echo mysql-server update my.ini begin...
	for /f "tokens=*" %%A in ('type "%MY_INI_PATH%"') do (
		set "LINE=%%A"
		if "!LINE:~0,8!"=="basedir=" set "LINE=basedir=%NEW_BASEDIR%"
		if "!LINE:~0,8!"=="datadir=" set "LINE=datadir=%NEW_DATADIR%"
		echo !LINE!>>"%TMP_FILE%"
	)

	rem 用更新后的配置替换原始的my.ini文件
	move /Y "%TMP_FILE%" "%MY_INI_PATH%"

	echo my.ini is update...
	
	REM 初始化 MySQL
	echo 初始化 MySQL...
	"%NEW_BASEDIR%\bin\mysqld.exe" --initialize-insecure --user=mysql

	rem 服务不存在,初始化服务
	echo mysql-server is not exist, init server %ServiceName%
	"%NEW_BASEDIR%\bin\mysqld.exe" --install %ServiceName%

	echo mysql-server start server %ServiceName%
	net start %ServiceName%	
	
	REM 假设 SQL 脚本名为 adserver-simple,位于当前目录下
	echo adserver-simple.sql ...
	"%NEW_BASEDIR%\bin\mysql.exe" -u root < adserver-simple.sql

	REM 重置 root 用户密码
	echo reset root psd...
	"%NEW_BASEDIR%\bin\mysql.exe" -u root < mysql-user-init.sql
)

echo windows-server-mysql success
endlocal

REM 执行完成后自动关闭
timeout /t 2 >nul
exit

mysql-user-init.sql:重置root密码(并新增zhangsan用户授予权限)

use mysql;
alter user 'root'@'localhost' IDENTIFIED BY 'Yess5678!';
CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY 'Abc123!@';
GRANT ALL PRIVILEGES ON *.* TO 'zhangsan'@'localhost';
FLUSH PRIVILEGES;

adserver-simple.sql:创建数据库sql脚本

亲测有效。


http://www.kler.cn/a/322587.html

相关文章:

  • DataStream编程模型之数据源、数据转换、数据输出
  • Visual Studio 圈复杂度评估
  • 极速入门数模电路
  • Redis-08 Redis集群
  • 5个有效的华为(HUAWEI)手机数据恢复方法
  • C/C++中使用MYSQL
  • Meta震撼发布Llama3.2大规模模型
  • 记录QTreeView使用(item勾选,事件,过滤)
  • cubemx配置ADC
  • [3]Opengl ES着色器
  • ST188单光束反射式红外光电传感器心率测量原理
  • 混拨动态IP代理的优势是什么
  • 网络编程(10)——json序列化
  • leetcode721. 账户合并
  • 高级算法设计与分析 学习笔记9 跳表
  • 【论文阅读】RISE: 3D Perception Makes Real-World Robot Imitation Simple and Effective
  • 动态规划入门题目->使用最小费用爬楼梯
  • Ceph 基本架构(一)
  • Docker实践与应用
  • QT开发模式(一):界面和业务逻辑分离
  • 基于Hive和Hadoop的电商消费分析系统
  • 人工智能之计算机视觉的发展历程与相关技术内容,相应的模型介绍
  • docker-文件复制(docker cp:用于在Docker主机和容器之间拷贝文件或目录)
  • Windows系统的Tomcat日志路径配置
  • 在 Ubuntu 上构建 Electron 项目时的问题记录和解决方法
  • Meta的LLaMA 3.2系列大模型打败OpenAI,Orion的原型AR眼镜更是引领科技新时代!