首页 > 编程知识 正文

mysql安装后初始化,mysql初次启动

时间:2023-05-03 07:30:14 阅读:224400 作者:2529

///

///安装并开启服务///

public static bool InitAndStartService(string serviceName, string mysqliniPath, string mysqlPath, string mysqlBinPath, stringmysqlDataPath)

{try{

A_InitDataBase(mysqlBinPath);

B_ResetMySqlConfig(mysqliniPath, mysqlPath, mysqlDataPath);

C_InstallService(mysqlBinPath, serviceName, mysqliniPath);

D_StartService(serviceName);

E_SetDefaultPassword(mysqliniPath, api.MySqlPassword);

}catch (Exception ex) { api.logger.addToLog(ex, "InitAndStartService方法出错!"); return false; }return true;

}///

///初始化数据库,如果已经发生过初始化,则不会再初始化,注意,初始化完成后是空密码。///

///

///

public static void A_InitDataBase(stringmysqlBinPath)

{if (!Directory.Exists(api.MysqlDataPath))

{try { Directory.CreateDirectory(api.MysqlDataPath); } catch{ }

}//新建初始数据库

var log = exec.RunCmd(mysqlBinPath, "mysqld --initialize-insecure --console").Trim();//--user=mysql

api.logger.addToLog("A_InitDataBase方法日志:rn" +log);

}///

///配置数据库ini文件,在初始化之后,启动服务之前调用。///

public static void B_ResetMySqlConfig(string mysqlIniPath, string mysqlPath, stringmysqlDataPath)

{

IniHelper ini= newIniHelper(mysqlIniPath);

ini.Write("mysqld", "basedir", (mysqlPath + "").TrimEnd(‘\‘));

ini.Write("mysqld", "datadir", (mysqlDataPath + "").TrimEnd(‘\‘));

}///

///安装服务,会执行卸载再装。///

public static void C_InstallService(string mysqlBinPath, string serviceName, stringmysqliniPath)

{

exec.RunCmd(mysqlBinPath,string.Format("mysqld.exe -remove {0}", serviceName));var log = exec.RunCmd(mysqlBinPath, string.Format("mysqld.exe -install {0} --defaults-file="{1}"", serviceName, mysqliniPath));

api.logger.addToLog("C_InstallService方法日志:rn" +log);

}///

///启动服务///

public static bool D_StartService(stringserviceName)

{//return Cocon90.Lib.Util.Window.Service.ServiceHelper.StartService(serviceName, TimeSpan.FromSeconds(10));//开启服务

try{

ServiceController[] services=ServiceController.GetServices();

ServiceController service= services.Where(p => p.ServiceName ==serviceName).FirstOrDefault();if (service == null) return false;

service.Start();

service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(10));return service.Status ==ServiceControllerStatus.Running;

}catch (Exception ex) { api.logger.addToLog(ex, "D_StartService方法出错:"); return false; }

}///

///设置初始密码。将空密码修改为指定密码。///

public static bool E_SetDefaultPassword(string mysqliniPath, stringnewPassword)

{var port =GetDbPort(mysqliniPath);return sql.SetDefaultPassword(port, "", newPassword);

}///

///检测数据库是否存在(或者已初始化过)///

public static bool GetIsDbFileExisted(stringmysqlDataPath)

{return !(!Directory.Exists(mysqlDataPath) || Directory.GetFiles(mysqlDataPath).Length == 0 || !Directory.Exists(Path.Combine(mysqlDataPath, "mysql"))); //检查目录下有无文件,或数据目录下有无mysql文件夹//if (ifNotExistIsInit)//{// //新建初始数据库//string log = exec.RunCmd(mysqlBinPath, "mysqld --initialize-insecure --user=mysql --console").Trim();//if (log.Length > 12)//{// //获得初始密码//initPassword = log.Substring(log.Length - 12, 12);//}//}

}///

///获取当前端口///

public static string GetDbPort(stringmysqlIniPath)

{

IniHelper ini= newIniHelper(mysqlIniPath);return ini.Read("mysqld", "port");

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。