MySql服务初始化、安装、启动
/// <summary>
/// 安装并开启服务
/// </summary>
public static bool InitAndStartService(string serviceName, string mysqliniPath, string mysqlPath, string mysqlBinPath, string mysqlDataPath)
{
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;
} /// <summary>
/// 初始化数据库,如果已经发生过初始化,则不会再初始化,注意,初始化完成后是空密码。
/// </summary>
/// <param name="mysqlBinPath"></param>
/// <returns></returns>
public static void A_InitDataBase(string mysqlBinPath)
{
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方法日志:\r\n" + log);
}
/// <summary>
/// 配置数据库ini文件,在初始化之后,启动服务之前调用。
/// </summary>
public static void B_ResetMySqlConfig(string mysqlIniPath, string mysqlPath, string mysqlDataPath)
{
IniHelper ini = new IniHelper(mysqlIniPath);
ini.Write("mysqld", "basedir", (mysqlPath + "").TrimEnd('\\'));
ini.Write("mysqld", "datadir", (mysqlDataPath + "").TrimEnd('\\'));
} /// <summary>
/// 安装服务,会执行卸载再装。
/// </summary>
public static void C_InstallService(string mysqlBinPath, string serviceName, string mysqliniPath)
{
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方法日志:\r\n" + log);
}
/// <summary>
/// 启动服务
/// </summary>
public static bool D_StartService(string serviceName)
{
//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());
return service.Status == ServiceControllerStatus.Running;
}
catch (Exception ex) { api.logger.addToLog(ex, "D_StartService方法出错:"); return false; }
} /// <summary>
/// 设置初始密码。将空密码修改为指定密码。
/// </summary>
public static bool E_SetDefaultPassword(string mysqliniPath, string newPassword)
{
var port = GetDbPort(mysqliniPath);
return sql.SetDefaultPassword(port, "", newPassword);
}
/// <summary>
/// 检测数据库是否存在(或者已初始化过)
/// </summary>
public static bool GetIsDbFileExisted(string mysqlDataPath)
{ return !(!Directory.Exists(mysqlDataPath) || Directory.GetFiles(mysqlDataPath).Length == || !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);
// }
//}
}
/// <summary>
/// 获取当前端口
/// </summary>
public static string GetDbPort(string mysqlIniPath)
{
IniHelper ini = new IniHelper(mysqlIniPath);
return ini.Read("mysqld", "port");
}
public static bool SetDefaultPassword(object port, object initPassword, string newPassword)
{
string connStr = string.Format("server=localhost;user=root;port={0};password='{1}';logging=true;", port, initPassword);
MySqlConnection conn = new MySqlConnection(connStr);
try
{
conn.Open();
var command = new MySqlCommand(string.Format("alter user 'root'@'localhost' identified by '{0}';", newPassword), conn);
var eff = command.ExecuteNonQuery();
conn.Close();
return true;
}
catch (Exception ex)
{
conn.Close();
return false;
}
}
MySql服务初始化、安装、启动的更多相关文章
- mysql 服务【安装】【启动】【停止】【卸载】【重置密码】
windows安装:一.一机安装多个服务时,重复步骤,修改服务名即可: 1.mysqld install mysql_12336 --defaults-file="MYSQL_HOME\my ...
- mysql 服务windows安装
找到mysql的bin目录,下面有一个mysqld.exe程序,这是用来启动mysql服务的,直接运行即可启动. 还有安装windows服务方式: mysqld.exe -install -manua ...
- mysql服务端安装的系列问题处理
1.mysql服务无法启动,报1067错误 注意:mysql服务端加压之后的文件名最好不要带其他符号(如:"_"之类等其他的一些符号),用纯英文跟数字就可以,没有经过仔细验证带符号 ...
- WAMP中mysql服务突然无法启动 解决方法
wamp的mysql服务前两天还能用,今天突然不能无法启动了,原因可能是近期电脑强行关机,删除wamp\bin\mysql\mysql5.6.17\data目录下的ib_logfile0和ib_log ...
- MariaDB/MySql 服务消失无法启动
今天启动电脑打开数据库发现这么一个错误: 2003 can't connect to mysql server on localhost 10038 无奈去查看了服务,发现mysql服务消失了,猜 ...
- 关于MySQL服务无法正常启动问题
使用mysql的时候,突然查看服务列表也找不到mysql服务 解决办法: 一.首先打开CMD,切换到MySql安装目录的MySql Server →bin目录下 运行如下命令(具体试个人安装的MySq ...
- 7_linux下PHP、Apache、Mysql服务的安装
1.首先安装之前,要确保你的虚拟机能连上外网. Mysql: 1.yum -y install mysql 连接数据库命令行模式 2.yum install mysql-server 安装mys ...
- mysql服务里面没有启动项
解决:5.0版本:开始->运行->cmd,进到mysql安装的bin目录D:\MySQL\bin>mysqld.exe -installService successfully in ...
- mysql数据库初始化(启动mysql时候报很多错误,初始化)
./mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/us ...
- MySQL Install--CentOS 7配置MySQL服务和开启启动
创建MySQL服务 编辑文件: vim /usr/lib/systemd/system/mysql.service 录入下面内容: PS: 注意修改ExecStart脚本 [Unit]Descript ...
随机推荐
- Thinking in Java---异常处理机制
java的异常处理机制能够使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续运行的问题,,当程序运行时出现异常时,系统就会自己主动生成一个Exception对象来通知 ...
- 绝望的主妇第一二三季/Desperate Housewives迅雷下载
绝望主妇 第一二三季 Desperate Housewives Season 1 2 3(2004 2005 2006) 本季看点:在紫藤街上住着这样一群主妇:拥有四个孩子和一个如孩子一般的丈夫的女强 ...
- AsyncTask和Handler的优缺点
二者的区别我就不多说了,两个东西共同点都是为了解决耗时操作的问题,主要区别在于一个流程完善,拿来就用,一个偏向自主定制,扩展性高. 这里面有个谁是轻量级,谁适合大任务的问题:http://blog.s ...
- IPython介绍
本文编写时,IPython最新的版本为6.3和5.4. 介绍 IPython 是 Fernando 在 2001 开始开发的一个交互式的Python解释执行环境.众所周知,Python提供了一个交互执 ...
- [转]php curl经典最常用的5个例子
转自: http://www.jb100.net/html/content-22-821-1.html php curl常用的5个例子 我用php ,curl主要是抓取数据,当然我们可以用其他的方法来 ...
- [转]Infobright是一个与MySQL集成的开源数据仓库
[文章作者:张宴 本文版本:v1.1 最后修改:2010.05.18 转载请注明原文链接:http://blog.zyan.cc/infobright/] Infobright是一个与MySQL集成的 ...
- Springboot 之 自定义配置文件及读取配置文件注意:配置文件中的字符串不要有下划线 .配置中 key不能带下划线,value可以(下划线的坑,坑了我两天..特此纪念)
注意:配置文件中的字符串不要有下划线 .配置中 key不能带下划线,value可以 错误的.不能读取的例子: mySet .ABAP_AS_POOLED = ABAP_AS_WITH_P ...
- aspnet_regiis -i VS 20XX 的开发人员命令提示符
1,VS 2010 Setting environment x86 tools. D:\Program Files\Microsoft Visual Studio 10.0\VC>aspnet_ ...
- AD各种布线方法总结
1.常规布线:不详细说了,是个人就知道怎么弄.需要说明的是在布线过程中,可按小键盘的*键或大键盘的数字2键添加一个过孔:按L键可以切换布线层:按数字3可设定最小线宽.典型线宽.最大线宽的值进行切换. ...
- ajax hash缓存
hash 模拟url路由 function hashdone(){ var hash; hash=(!window.location.hash)?"#one&qu ...