我在从wampserver导出mysql数据库时遇到问题。我使用以下代码:
Private Sub cmdBackup_Click()
Screen.MousePointer = vbHourglass
DoEvents
cmd = Chr(34) & "C:\Documents and Settings\Owner\Desktop\Documents\Clients\Darwin\mysql\mysqldump" & Chr(34) & "mysqldump.exe -uroot -p -hlocalhost school > c:\a.sql"
Call execCommand(cmd)
Screen.MousePointer = vbDefault
MsgBox "Done"
End Sub
正如预期的那样,在我的C:/中创建了一个.sql文件。但由于未知原因,创建的sql文件为空(字面上为空,0字节,内部没有文本)。
有人能帮助我吗?提前致谢!抱歉我的英文。
答案 0 :(得分:0)
我不知道自从我使用VB6以来,该代码是否应该工作多年,但我可以看到一个明显的问题是当你执行这个语句时,
mysqldump.exe -uroot -p -hlocalhost school > c:\a.sql
mysqlsump.exe
将看到-p
参数,并期望从控制台输入密码。从命令窗口手动尝试!
我猜测没有控制台,如果有用户不知道root
帐户的密码。
快速解决方案是将代码更改为:
mysqldump.exe -uroot -pSuperUsersPassword -hlocalhost school > c:\a.sql
但这是一个主要的安全噩梦,因为您已经在一段代码中硬编码了MySQL超级用户密码。记住MySQL是一个合适的DBMS,可以管理许多不同的数据库,而不仅仅是你正在使用的数据库。
此外,如果密码被更改,您必须记住同时更改此代码,维护噩梦。
至少你应该在MySQL中创建一个新的用户帐户,该帐户只能访问这一个数据库并且只有权利进行备份(SELECT, SHOW DATABASES, LOCK TABLES, EVENT
)。那么至少你不会将Crown Jewels赠送给任何能看到你的源代码或者可以读取你的可执行文件的十六进制转储的人。