Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用inno设置中的代码部分在MySQL中插入用户和密码_Mysql_Inno Setup - Fatal编程技术网

使用inno设置中的代码部分在MySQL中插入用户和密码

使用inno设置中的代码部分在MySQL中插入用户和密码,mysql,inno-setup,Mysql,Inno Setup,我的应用程序使用MySQL服务器。在inno安装脚本中详细说明,该脚本执行以下操作: [代码]中的 安装MySQL服务器(确定) 安装MySQL ODBC连接器(正常) 配置MySQL服务器(确定) 在Windows上启动MySQL服务(确定) 安装应用程序(确定) 在[运行]中 使用批处理文件在用户表MySQL中输入用户和密码(确定) 使用批处理文件创建数据库应用程序(确定) 启动应用程序(确定) 脚本运行良好,但我希望[run]部分的第1项和第2项也在[code]中执行,因此: [代码]中的

我的应用程序使用MySQL服务器。在inno安装脚本中详细说明,该脚本执行以下操作:

[代码]中的

  • 安装MySQL服务器(确定)
  • 安装MySQL ODBC连接器(正常)
  • 配置MySQL服务器(确定)
  • 在Windows上启动MySQL服务(确定)
  • 安装应用程序(确定)
  • 在[运行]中

  • 使用批处理文件在用户表MySQL中输入用户和密码(确定)
  • 使用批处理文件创建数据库应用程序(确定)
  • 启动应用程序(确定)
  • 脚本运行良好,但我希望[run]部分的第1项和第2项也在[code]中执行,因此:

    [代码]中的

  • 安装MySQL服务器(确定)
  • 安装MySQL ODBC连接器(正常)
  • 配置MySQL服务器(确定)
  • 在Windows上启动MySQL服务(确定)
  • 使用批处理文件在用户表MySQL中输入用户和密码(错误)
  • 使用批处理文件创建数据库应用程序(错误)
  • 安装应用程序(确定)
  • 在[运行]中

  • 启动应用程序(确定)
  • 但第二个方案在包含新用户和密码以及创建数据库方面存在错误。在[运行]中,这不会发生

    我在[代码]中用于插入用户和密码的代码如下:

    if (CurStep = ssInstall) then
    begin WizardForm.ProgressGauge.Style: = npbstMarquee; WizardForm.StatusLabel.Caption: = 'Starting service MySQL on Windows. This may take a few minutes ... ';
    if not Exec (ExpandConstant ('{pf} \ MySQL \ MySQL Server 5.5 \ bin \ mysqld.exe'), 'mysql-u root GRANT ALL PRIVILEGES ON *. * TO myusername @ localhost IDENTIFIED BY mypassword WITH GRANT OPTION;' '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then
    MsgBox ('The MySQL service failed. Code:' + IntToStr (ResultCode) mbInformation, MB_OK);
    WizardForm.ProgressGauge.Style: = npbstNormal; WizardForm.StatusLabel.Caption: ='';
    end;
    

    MySQL客户端MySQL.exe使用param
    -e

    命令应该是这样的

    mysql -uroot -e"GRANT ALL PRIVILEGES ON *.* TO 'myusername'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION"
    

    也别忘了设置根密码

    你好,Barranka,谢谢你的回复,但是代码不起作用。我添加了“-e”和“-p”,如下所示:'mysql-u root-p-e'+AddQuotes('GRANT ALL PRIVILEGES ON.TO')myusername@localhost我想下面的代码应该是正确的,在myusername、localhost和mypassword之间有符号('),但inno安装程序不接受它,因为它感觉参数太多了mysql-u root-p-e'+AddQuotes('使用GRANT选项将*.*上的所有权限授予'myusername'@'localhost'以'mypassword'标识;'))如果无法直接在字符串中硬编码值,则需要使用+运算符将变量与字符串常量连接起来。