1、先去下载绿色版的Mysql(https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.20-winx64.zip)

2、解压缩到任意目录(如D:\Mysql),并保证此目录是根目录,即访问bin目录的访问路径是(D:\Mysql\bin)

3、在D:\Mysql下建立一个文本文件(编码格式为ANSI,不要Utf8格式,否则会乱码)

4、写入以下批处理代码

echo off
del my.ini
echo [mysqld]>>my.ini
echo port=3306>>my.ini
echo character-set-server=utf8mb4>>my.ini
echo default-storage-engine=INNODB>>my.ini
set CURRENT_DIR=%CD%
set CURRENT_DIR=%CURRENT_DIR:\=\\%
echo basedir="%CURRENT_DIR%\\">>my.ini
echo datadir="%CURRENT_DIR%\\data\\">>my.ini
echo "set basedir parameter coplete"
cd %CURRENT_DIR%\bin
mysqld --install mysql --defaults-file="%CURRENT_DIR%\\my.ini"

5、重命名新建的文本文件为批处理文件名格式,如 1.txt重命名为 1.bat

6、双击运行1.bat,如果没有报错,则运行成功,可以通过数据库管理客户端连接。

7、使用C#代码在程序中自动注册(运行上面的bat批处理)Mysql服务和启动Mysql服务(WPF环境下,如其它环境,则去掉Wpf下的关键字即可使用,前提是有权限调用cmd和有权限安装服务)

try
{
//安装服务
var proc = new Process();
var info = new ProcessStartInfo("cmd.exe")
{
WorkingDirectory = $@"{AppDomain.CurrentDomain.BaseDirectory}\MySQL\",
FileName = $@"{AppDomain.CurrentDomain.BaseDirectory}\MySQL\runmysql.bat",
UseShellExecute = true,
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true
}; proc.StartInfo = info;
proc.Start();
//var output = proc.StandardOutput.ReadToEnd();//读取进程的输出
//Console.WriteLine(output);
proc.WaitForExit();
Dispatcher?.Invoke(() =>
{
lb_info.Text += @"【成功】" + Environment.NewLine;
});
}
catch (Exception ex)
{
App.Log4Helper.Error("服务安装失败:" + ex.Message);
App.Log4Helper.Error(ex.Message);
Dispatcher?.Invoke(() =>
{
lb_info.Text += @"【失败】" + Environment.NewLine;
});
}
//启动服务
var serviceController = new ServiceController("mysql");
if (serviceController.Status != ServiceControllerStatus.Running)
{
Dispatcher?.Invoke(() =>
{
lb_info.Text += @"数据库启动...";
}); try
{
serviceController.Start();
serviceController.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 0, 15));
if (serviceController.Status != ServiceControllerStatus.Running)
{
MessageBox.Show(@"数据库服务启动失败,请检查数据库服务配置文件。", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
Environment.Exit(0);
return;
}
Dispatcher?.Invoke(() =>
{
lb_info.Text += @"【成功】" + Environment.NewLine;
});
}
catch (Exception ex)
{
App.Log4Helper.Error("数据库启动失败:" + ex.Message);
App.Log4Helper.Error(ex.Message);
Dispatcher?.Invoke(() =>
{
lb_info.Text += @"【失败】" + Environment.NewLine;
});
}
}

PS: set CURRENT_DIR=%CURRENT_DIR:\=\\%  这句的意思是把目录里面所有\转换成\\,防止遇到类似于 \bin这种目录路径的时候把\b给转义了,下面的\\都是这个用途,防止转义。

绿色版Mysql自动建立my.ini和命令行启动并动态指定datadir路径的更多相关文章

  1. mysql学习-windows下绿色版mysql安装问题解决办法

    1.下载绿色版mysql 从该地址http://dev.mysql.com/downloads/mysql/ 中选择windows的版本,选择下载. 2.将下载的压缩包解压. 3.将根目录下的my-d ...

  2. windows 安装绿色版mysql

    (1)到官网下载绿色版mysql:http://dev.mysql.com/downloads/mysql/ (2)下载好后,放在F:\mysql,解压出来 (3)进入到mysql-5.6.19-wi ...

  3. windows下启动mysql服务的命令行启动和手动启动方法

    1.图形界面下启动mysql服务. 在图形界面下启动mysql服务的步骤如下: (1)打开控制面板->管理工具->服务,如下图所示: 可以看到Mysql服务目前的状态是未启动(未写已启动的 ...

  4. 从Windows命令行启动MySQL

    SERVER: 从Windows命令行启动MySQL 可以从命令行手动启动MySQL服务器.可以在任何版本的Windows中实现. 要想从命令行启动mysqld服务器,你应当启动控制台窗口(或“DOS ...

  5. 【Problem】xampp in ubuntu下命令行启动mysql报错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (2)

    xampp in ubuntu下命令行启动mysql报错: reddevil@reddevil-Lenovo:/opt/lampp$ ./bin/mysql -u root -p Enter pass ...

  6. 绿色版mysql注册卸载服务

    如果直接用绿色版的mysql,则下载后解压,只需对目录下的my.ini文件的basedir(mysql的基本目录)和datadir(mysql数据目录)指定就可以,如下所示. #Path to ins ...

  7. 绿色版mysql 免安装使用(转载)

    MySQL绿色版的安装(mysql-5.6.22-win32.zip) Posted on 2015-01-31 23:21 卒子 阅读(10739) 评论(2) 编辑 收藏 由于工作需要最近要开始研 ...

  8. (转载)绿色版Mysql的安装配置

    本文出自于:http://johnnyhg.javaeye.com/blog/245544 一.下载MySQL http://www.mysql.org/downloads 我下载的是mysql-no ...

  9. 安装绿色版mysql小记(5.7.11)

    平时使用oracle,感觉太耗我电脑内存了,实在不想用oracle做平时练习了,那就只装一个客户端,工作用..平时自己试试mysql吧..mysql的安装真麻烦,真不是傻瓜式安装就能用,稍微配置不对就 ...

随机推荐

  1. vc项目中加载多个lib遇到的问题

    一个VC项目中 在网络加密 json解析等方面  加载了多个第三方库和文件 boost cryptpp rapidjson  mysql的连接池等等 在使用mysql++的时候 多次报错 LNK 20 ...

  2. maven下的jar项目打包的方法

    1.先对pom项目进行install: RunAs->maven install,如果出现如下错误: Failed to execute goal org.apache.maven.plugin ...

  3. Python内置的subprocess.Popen对象

    具体内容参见:https://docs.python.org/3/library/subprocess.html 大概来说,就是可以对应输入的命令产生一个进程,该进程实例内置如下方法. |  comm ...

  4. idea配置springBoot项目热加载

    1.在application.properties中禁用模板引擎缓存 比如freemarker:spring.freemarker.cache=false 2.在pom.xml中添加依赖 <de ...

  5. WordCount改进 小组项目

    GitHub地址:https://github.com/DM-Star/WordCount-opt 作业需求:http://www.cnblogs.com/ningjing-zhiyuan/p/865 ...

  6. 关于进行pdf的每页广告去除、转换word等方案。

    pdf转word经常使用的是 软件下载安装破解完成以后进行编辑pdf,可以导出word,效果比一般的word自带的转换效果要好. 在进行pdf的每页去除页脚或者页眉的广告时候,使用pdf的替换功能.这 ...

  7. rails 新建user的phonenumber字段

    1.新建字段 //rails g migration add_字段名_to_表名 字段名:字段类型 rails g migration add_title_to_contents title:stri ...

  8. Python学习杂记

    Python中关键字yield有什么作用? 首先得理解generators,而理解generators前还要理解iterables: 你可以用在for...in...语句中的都是可迭代的:比如list ...

  9. 2018.11.06 NOIP训练 简单的计数问题(计数dp)

    传送门 直接f[i][j]f[i][j]f[i][j]表示已经到第iii个位置已经找到jjj个的方案数. 简单转移一下就行了. 代码

  10. linux 下安装nginx

    下载 下载版本 nginx-1.13.4.tar.gz 安装 1.解压 tar -zxvf nginx-1.13.4.tar.gz 2.配置安装目录 ./configure  —prefix=/usr ...