zoukankan      html  css  js  c++  java
  • 绿色版Mysql自动建立my.ini和命令行启动并动态指定datadir路径

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

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

    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%in
    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
    unmysql.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:=\%  这句的意思是把目录里面所有转换成\,防止遇到类似于 in这种目录路径的时候把给转义了,下面的\都是这个用途,防止转义。

  • 相关阅读:
    linux中tar命令用法
    CentOS 7安装 ifconfig 管理命令
    CentOS 7安装 ifconfig 管理命令
    VMware 创建设置虚拟网卡
    VMware 创建设置虚拟网卡
    C#MongoDB Driver $in
    C#MongoDB Driver $in
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(有舵机)
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(有舵机)
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(无舵机)
  • 原文地址:https://www.cnblogs.com/wdw984/p/10647604.html
Copyright © 2011-2022 走看看