背景:有段时间工作内容有需要部署环境,然后其中有安装mysql,msi在线安装特别慢,特别是需要远程安装的时候,所以想换个方式,发现了官方有压缩版本的,需要手动更改一些配置,有点麻烦,所以搞了个一键安装的版本
步骤:
1、去官网下载mysql5.7压缩版本,https://downloads.mysql.com/archives/community/;
2、这里用的是5.7.20-winx64,解压,把文件移动到想要安装的路径,比如E:\软件包\mysql-5.7.20-winx64
3、在bin同级目录下,新建install.bat文件
,贴上如下代码:
@ECHO OFF
rem ***********************MYSQL环境变量部署********************************
::获取当前文件所在的目录的绝对路径
@set "nowpath=%~dp0"
@cd /d %nowpath%
@echo 现在的位置是:%cd%
rem 删除my.ini配置文件
@del /F %cd%\my.ini
@del /F %cd%\my2.ini
@echo 删除完成
rem 重定向追加生成my.ini配置
@echo #客户端配置>> my.ini
@echo [client]>> my.ini
@echo # 设置3306端口>> my.ini
@echo port = 3306>> my.ini
@echo #设置客户端使用的字符集默认为UTF8>> my.ini
@echo default-character-set=utf8>>my.ini
@echo #服务端配置>> my.ini
echo [mysqld]>> my.ini
echo #设置3306端口>> my.ini
echo port=3306>> my.ini
echo #设置mysql的安装目录>> my.ini
echo basedir=%cd%>> my.ini
echo #设置mysql数据库的数据的存放目录>> my.ini
echo datadir=%cd%\data>> my.ini
echo #允许最大连接数>> my.ini
echo max_connections=200>> my.ini
echo #允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统>> my.ini
echo max_connect_errors=10>> my.ini
echo #服务端使用的字符集默认为UTF8>> my.ini
echo character-set-server=utf8>> my.ini
echo #创建新表时将使用的默认存储引擎>> my.ini
echo default-storage-engine=INNODB>> my.ini
echo #默认使用“mysql_native_password”插件认证>> my.ini
echo default_authentication_plugin=mysql_native_password>> my.ini
echo #跳过密码验证>> my.ini
echo skip-grant-tables>> my.ini
echo #设置mysql默认字符集>> my.ini
echo [mysql]>> my.ini
echo default-character-set=utf8>> my.ini
echo my.ini生成成功
echo #客户端配置>> my2.ini
echo [client]>> my2.ini
echo # 设置3306端口>> my2.ini
echo port = 3306>> my2.ini
echo #设置客户端使用的字符集默认为UTF8>> my2.ini
echo default-character-set=utf8>>my2.ini
echo #服务端配置>> my2.ini
echo [mysqld]>> my2.ini
echo #设置3306端口>> my2.ini
echo port=3306>> my2.ini
echo #设置mysql的安装目录>> my2.ini
echo basedir=%cd%>> my2.ini
echo #设置mysql数据库的数据的存放目录>> my2.ini
echo datadir=%cd%/data>> my2.ini
echo #允许最大连接数>> my2.ini
echo max_connections=200>> my2.ini
echo #允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统>> my2.ini
echo max_connect_errors=10>> my2.ini
echo #服务端使用的字符集默认为UTF8>> my2.ini
echo character-set-server=utf8>> my2.ini
echo #创建新表时将使用的默认存储引擎>> my2.ini
echo default-storage-engine=INNODB>> my2.ini
echo #默认使用“mysql_native_password”插件认证>> my2.ini
echo default_authentication_plugin=mysql_native_password>> my2.ini
echo #设置mysql默认字符集>> my2.ini
echo [mysql]>> my2.ini
echo default-character-set=utf8>> my2.ini
echo my2.ini生成成功
rem ****************************配置系统环境变量*********************************
::删除之后的路径分隔符号“\”
rem @set "nowpath=%nowpath:~0,-1%"
rem @echo 当前文件所在目录路径:%nowpath%
rem 切换路径到执行文件所在的目录
rem @cd /d %~dp0
rem @cd %nowpath%
::读取环境变量path到临时文件中
set >temp.txt
::把path环境变量写入临时文件中,以备后续使用findstr命令进行查找
rem echo %mypath% > temp.txt
::在临时文件中查找有没有当前路径
find "%cd%\bin" temp.txt
if %errorlevel% == 0 (
echo path环境变量中已经包含了当前路径%nowpath%
echo 程序返回码:%errorlevel%
) else (
echo path环境变量中没有包含当前路径%nowpath%
echo 程序返回码:%errorlevel%
::追加当前文件所在目录的路径到环境变量path中
setx /m "path" "%cd%\bin;%path%"
)
::删除临时文件
del temp.txt
rem 进入 bin目录
@cd bin
rem 显示当前路径
@echo %cd%
echo 现在的位置是:%cd%
@echo 初始化数据库
@mysqld --initialize --console
@echo 正在安装数据库
@mysqld install
rem 启动mysql服务
@net start mysql
rem 执行修改密码和开放访问权限的SQL指令
@SET dbhost=127.0.0.1
@SET dbuser=root
@SET dbpasswd=123456
rem 此语句可以保证.bat同级目录下的.sql文件能被找到
@SET sqlpath=%nowpath%
rem 需要执行执行sql的文件
rem @set sqlfile=create.sql
rem 还原数据库备份
rem @set sqlfile2=y7000v1.sql
rem @echo 执行sql脚本
rem @mysql -h%dbhost% -u%dbuser% -p%dbpasswd% < %sqlpath%%sqlfile% --default-character-set=utf8
rem @echo 执行还原数据库备份
rem @mysql -h%dbhost% -u%dbuser% -p%dbpasswd% y7000v2< %sqlpath%%sqlfile2% --default-character-set=utf8
rem 恢复权限验证
@copy /y %sqlpath%my2.ini %sqlpath%my.ini
@net stop mysql
@net start mysql
@echo 数据库安装成功
@pause
4、在bin同级目录下,新建create.sql文件,贴上如下代码
flush privileges;
set password for root@localhost = password('123456');
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
flush privileges;
show databases;
quit
5、然后双击install.bat完成安装,这里设置了默认用户和密码是root和123456
6、如果想卸载,创建uninstall.bat文件,贴上如下代码,然后双击运行该文件
@echo off
@echo 准备卸载MYSQL...
@echo 关闭MySQL服务
@net stop mysql
@echo 执行卸载
@mysqld --remove
@cd /d %~dp0
@echo 删除MySQL安装目录data
rd /s /q data
@echo 卸载完毕
@pause