C#实现Mysql备份(mysqldump)

3 篇文章 0 订阅
文章描述了一段代码,该代码用于通过mysqldump工具在Windows环境下备份MySQL数据库。过程中遇到两个报错:一是命令行使用密码的安全警告,二是可能出现的拒绝访问错误。尽管有警告,但备份操作仍能成功完成。问题可能涉及密码输入方式、服务器状态、端口或配置文件错误。
摘要由CSDN通过智能技术生成

string mysqldump = string.Empty;
 string  StrSql = string.Format("select @@basedir as basePath from dual");//查询Mysqlbin文件地址,用于打开cmd命令

DataSet DS = mysql.GetDataSet(StrSql);

mysqldump = DS.Tables[0].Rows[0]["basePath"].ToString();
mysqldump = mysqldump.Replace("/", "\\");//替换路径中的斜杠

mysqldump = mysqldump+"bin";

 //调用mysqldump备份mysql数据库的语句
string backupsql = string.Format("mysqldump --host={0} --default-character-set=utf8 --lock-tables   --port=3306 --user={1} --password={2} --quick --databases ", txthost.Text, txtuser.Text, txtpwd.Text);
 

 //备份数据库的路径
string strDBpath = @"C:\mysqlbackup\";
//判断备份的数据库路径是否存在
if (!Directory.Exists(strDBpath))
    {
       Directory.CreateDirectory(strDBpath);
    }

 strDBpath +=( DateTime.Now.ToString("yyyyMMdd_HHmmss") + "MySQLBackUp.sql");

 string cmd = backupsql + 数据库名+ " >" + filePath;

        /// <summary>
        /// MySQL的mysqldump程序执行函数
        /// </summary>
        /// <param name="mysqldumPath">mysqldum工具路径</param>
        /// <param name="strCmd">cmd命令</param>
        /// <returns></returns>
        private string RunCmd(string mysqldumPath, string strCmd)
        {
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.WorkingDirectory = mysqldumPath;
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            p.StandardInput.WriteLine(strCmd);
            p.StandardInput.WriteLine("exit");
            return p.StandardError.ReadToEnd();
        }

报错信息1 

 提示:在命令行界面上使用密码可能不安全。

原因:-p后边输入任何字符

如果再cmd里备份-p后不跟字符回车会让输入密码,密码成功以后备份;

我在程序中-p后直接跟密码,虽然会报错但是依旧备份成功,所以我就忽略了这条报错信息。

报错信息2

 提示:使用了密码但是拒绝访问

原因:可能是mysql服务器停了或端口IP问题或mysql配置文件ini错误或密码有误

如果括号中password后跟的是NO代表没有使用密码登录 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值