我想创建具有有限权限的 mysql 用户,只能与mysqldump. 我们可以分配给用户的最低权限是多少,以便他可以转储和加载数据库,或者这需要管理员权限?
现在我有这样的工作,但我不确定范围:
DROP user 'dumpuser'@'localhost' ;
FLUSH PRIVILEGES ;
GRANT SELECT ON mysql.proc TO 'dumpuser'@'localhost' IDENTIFIED BY 'dumppwd';
GRANT ALL ON dbname.* TO 'dumpuser'@'localhost' IDENTIFIED BY 'dumppwd';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
如果可能,我想进一步限制权限范围。
MySQL 转储和上传过程需要很长时间(约 8 小时)才能完成整个过程。
我正在将活动数据库转储到 mysqldump.tar 文件和几乎 3GB 中。当我加载到新数据库时,需要 6-8 小时才能完成该过程(上传到新数据库)。
为我完成该过程,推荐的解决方案是什么?
我有一些NAS存储要与我的专用托管服务提供商进行备份.我使用WHM设置自动每日备份以备份数据库和帐户.服务器托管一个站点.当它进行备份时,它执行一个mysql转储,并且实际上在整个备份过程中将站点关闭,因为在转储发生时没有人可以连接到数据库.该网站通常会停机约30秒到一分钟(这可能看起来不多,但对于这种网站来说这是一个真正的问题).
是否有更好的方法来进行备份以便不会发生这种情况(mysqlhotcopy或Maatkit会更好吗?),无论是备份到NAS的不同方法,还是根本不使用NAS并使用其他方法.
我有一个CSV文件,并希望产生的SQLite,MySQL和Postgres的,Oracle和MSSQL数据的转储.
是否有一个通用API(理想情况下基于Python)来做到这一点?
我可以使用ORM将数据插入每个数据库,然后导出转储,但这需要安装每个数据库.它似乎也浪费资源 - 这些CSV文件很大.
由于每个数据库的变化,我对自己尝试编写SQL很谨慎.理想情况下,有人已经完成了这项艰苦的工作,但我还没有找到它.
有人知道mysqldump中某些表的屏蔽(匿名化)效率吗?我已经完成了我的分析器但遗憾的是它不工作,关于大堆放好(让说1GB的++转储),因为它确实增加了转储时间因解析.
我所做的是首先解析表列(不应该花很长时间)并解析特定表的整个插入字符串.
我正在使用ruby,如果可能的话我想使用它.
我还研究了导出转储,转储它,通过内部ruby代码更新(屏蔽)然后再次导出转储的想法.虽然我没有尝试过多长时间.
当前的工作流程是:从服务器获取转储,解压缩,然后转储到mysql
新的将从服务器转储,解压缩,屏蔽机密数据并转储到mysql
对于1-2GB ++转储,当前的工作流程最多需要2个小时但不幸的是我已经在新的一个上花了4个小时,但它仍未在解析/屏蔽部分完成.
我还被建议通过取出变量和消耗更多内存的东西来即兴创建代码,因为据说ruby gc不是1:1的比例.我相信这是在REE(ruby企业版)上进行了优化,但我现在也在使用REE.
有没有人这样做,也许分享他们的想法?谢谢.
我有一个脚本,我写的是将某些字段移动到新的数据库中
$results = mysql_query ( "SELECT body, title FROM $source_db.Post" );
while ($row = mysql_fetch_array($results)) {
if(mysql_num_rows($users_result) > 0){
$insert = "INSERT INTO wp_posts (`body`,`title`) VALUES ('{$row['body']}', '{$row['row']}')";
mysql_query($insert);
}
}
Run Code Online (Sandbox Code Playgroud)
但正如你可以看到,由于单引号和双引号,查询将每次都中断,是否有像herdok这样的问题的解决方案
INSERT INTO wp_posts (`body`,`title`)
VALUES
('Here are the final returns from today's ...<br /><br />he stayed home...<br />
<div class="entry-content">
<div class="entry-body">', 'something')
Run Code Online (Sandbox Code Playgroud) 我有一个小应用程序,我将用它来备份和恢复一个mysql数据库,编码备份如下,它工作正常,
....
String command = "mysqldump --host=" + dataBase.getHost() + " --user=" + dataBase.getUserName() + " --password=" + dataBase.getPassword() + " "
+ dataBase.getDatabaseName() + " -r " + dataBase.getBackupPath() + "/ofm_mnu_backup_" + bkDate + ".sql";
System.out.println(command);
Process p = null;
try {
Runtime runtime = Runtime.getRuntime();
p = runtime.exec(command);
int processComplete = p.waitFor();
if (processComplete == 0) {
System.out.println("Backup created successfully");
} else {
System.out.println("Could not create the backup");
}
....
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用以下代码恢复数据库时它无法正常工作,请帮助
........
String command = "mysqldump --host=" + …Run Code Online (Sandbox Code Playgroud) 我需要获得一个DBDUMP,我正在使用MySQL.当我尝试获取数据库转储时,我收到以下错误.任何线索它做错了什么.
C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqldump -u root -p xxx myDB
e > dump.sql
Enter password: ***
mysqldump: Got error: 1049: Unknown database 'xxx' when selecting the database
Run Code Online (Sandbox Code Playgroud) 我想将mysqldump的输出分配给变量,稍后使用生成的输出.
> 1.9.3-p125 :020 > x = `mysqldump falala` mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when
> trying to connect
=> ""
> 1.9.3-p125 :021 > x
=> ""
Run Code Online (Sandbox Code Playgroud)
不.X返回空,甚至无法检查是否有错误
> 1.9.3-p125 :022 > x = system("mysqldump falala") mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO)
> when trying to connect
=> false
1.9.3-p125 :023 > x
=> false
Run Code Online (Sandbox Code Playgroud)
更好.这样,如果命令成功,x仍然有信息,但仍然没有控制台输出.
我还是Ruby的新手,但我认为发生的事情是Ruby继续运行而不等待mysqldump做它的事情,但我真的需要那个输出(因为如果发生错误,脚本会邮寄错误/控制台输出)
我需要运行的完整命令是这样的
mysqldump --host=#{host} --user=#{user} --password=#{pass} #{name} | …
我使用此线程的指南成功创建了一个数据库mysqldump文件.我还创建了第二个数据库,导航到包含并尝试将其恢复到新数据库但失败的目录,我尝试了两种方法:myDump.sqlmyDb1myDb2myDump.sqlmyDb2
> mysql -u root -p myDb2 < myDump.sql;
> -- entered password
Run Code Online (Sandbox Code Playgroud)
和:
> mysql -u root -p
mysql> -- entered password
mysql> USE myDb2;
mysql> SOURCE myDump.sql;
Run Code Online (Sandbox Code Playgroud)
两者都有相同的错误消息:
ERROR:
ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in
non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ' ?-'.
Run Code Online (Sandbox Code Playgroud)
我还想知道是否需要使用与旧数据库相同的数据库名称.我尝试使用不同的名称,但同样的结果错误.