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(10));
                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 == 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);
            //    }
            //}
        }
        /// <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;
            }
        }
时间: 2025-01-12 18:15:01

MySql服务初始化、安装、启动的相关文章

mysql服务端安装的系列问题处理

1.mysql服务无法启动,报1067错误解决方案:1).把mysql服务端解压目录新加一个my.ini文件,内容如下 [mysqld]# set basedir to installation path, e.g., c:/mysql# 设置为MYSQL的安装目录basedir=c:/tool/mysql5617win32# set datadir to location of data directory,# e.g., c:/mysql/data or d:/mydata/data# 设置

MySQL服务手动安装方法

解压安装 下载并解压mysql zip格式安装包. 将解压后的文件重命名为Mysql Server 5.6. 在C:\Program Files目录下创建MySql文件夹. 将文件夹Mysql Server 5.6拷贝到目录C:\Program Files\MySQL下.(也可以自己选择其他路径) 配置环境变量 我的电脑->属性->高级->环境变量,在PATH最后,增加“ ;C:\Program Files\MySQL\MySQL Server 5.6\bin ”,此处为mysql bi

关于MySQL服务无法正常启动问题

使用mysql的时候,突然查看服务列表也找不到mysql服务 解决办法: 一.首先打开CMD,切换到MySql安装目录的MySql Server →bin目录下 运行如下命令(具体试个人安装的MySql版本及路径) MySQL路径:D:\Program Files\MySQL\MySQL Server 5.5\bin D:\Program Files\MySQL\MySQL Server 5.5\bin >mysqld.exe -install 会出现提示 Service successfull

Windows运行PHP+MYSQL时,MYSQL服务无法正常启动的解决办法(1053错误)

1.开始--运行--services.msc 打开服务列表 2.右键MYSQL服务--属性--登录--此账户登录(系统管理员帐号密码) 3.启动MYSQL服务

mysql数据库初始化(启动mysql时候报很多错误,初始化)

./mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 这个命令在 /usr/local/mysql/bin 有时候在启动mysql时候报很多错误可以用这个命令初始化一下 原文地址:https://www.cnblogs.com/fps2tao/p/9029949.html

MySql服务端安装配置

下载免安装版压缩包 下载地址:http://dev.mysql.com/downloads/mysql 选择第一个zip文件点击进入下一个页面 直接点击下载即可 完成后进行解压  解压文件目录如下 其中data文件夹是我自己添加的,mysql.ini也是,配置mysql.ini有用. mysql.ini配置如下 [mysql] # 设置mysql客户端默认字符集default-character-set=utf8 [mysqld] #设置3306端口port = 3306 # 设置mysql的安

mysql 多实例安装启动

这次安装是建立在上次的mysql3306 安装成功的基础上http://liyingdi.blog.51cto.com/6397405/1879993 Tips:之前我们的一个实例是mysql3306,我们现在再安装一个mysql3307 1.和之前一样,创建需要的目录文件夹 mkdir -p /data/mysql/mysql3307/{data,logs,tmp} 创建完 就给文件授权 chown -R mysql:mysql /data/mysql/mysql3307/ 2.进入mysql

CentOs Linux 安装MySql服务失败 安装需要依靠包error:Failed dependencies

[[email protected] data]#rpm -ivh MySQL-server-5.5.24-1.linux2.6.x86_64.rpm error: Failed dependencies: MySQL conflicts with mysql-5.0.77-4.el5_4.2.x86_64纠结了半天,终于找到了解决方法:(感谢提供相关文章的博友) 在安装包后面加两个参数,如 [[email protected] data]#rpm -ivh MySQL-server-5.5.2

MySQL 5.7 安装过程中遇到的坑

在安装的过程中遇到了几个坑,特地记录下来.启动的时候会有有个错误: 大意为mysql退出且更新不了pid文件. 查看error.log,如图: 大意为ibdtata1文件不够,初始化的时候页数太大.初步判断为配置文件的配置参数问题. 将其改小或注释后解决. 初始化命令: bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mydata/data         # Before MySQL 5.6 bin