复制MySQL数据库进行开发


Make MySQL database copy for development

我有一个web应用程序,它可以在生产服务器上完美地工作。但是这个应用程序每天都在进步,我经常需要邀请辅助开发人员和自由职业者来升级它。所以,每次我找到人,我都必须发送我的应用程序的开发版本和生产MySQL数据库的副本,在那里我手动删除了所有机密数据。

所以,问题是:有可能为自动制作这个数据库开发版本制作脚本吗?

更新:我试着画一些数据。例如,我有一个用户表:

User table:
name  | email         | role         | phone   |
-----------------------------------------------
user2 | mail@mail.com | guest        | 1234567 |
user2 | mail@mail.com | admin        | 1234567 |
user2 | mail@mail.com | manager      | 1234567 |
user2 | mail@mail.com | topmanager   | 1234567 |

但是,当然,这个表只有真实的用户数据。还有一些类似的表格。所以,我想制作一个脚本,它可以转储整个生产数据库,删除一些重要和机密的表,比如Users、Orders、Payments等等。在这个脚本之后,将伪数据放入这些表中,比如我之前键入的Users数据。

您可以在命令行中使用mysql。

ssh -C user@newhost "mysql -uUSER -pPASS -e 'create database NEW_DB_NAME;'" 
&& mysqldump --force --log-error=mysql_error.log -uUSER -pPASS OLD_DB_NAME 
| ssh -C user@remotehost "mysql -uUSER -pPASS NEW_DB_NAME"

你的意思是想给他们一份数据库副本,其中一些部分是匿名的吗?

为什么不写这样的东西:

UPDATE `mytable` SET `foo` = `bar`

对那些专栏进行匿名?您可以编写一个PHP脚本,导出数据库,然后对任何相关的表和列执行此操作。

还是我误解了这个问题?

如果只想共享表的DDL(CREATE TABLE语句)

  1. 查找要共享的表的列表。

  2. 编写一个shell脚本登录到mysql,并逐个获取每个表的DDL。

    DESC表名称1;

    DESC表名称2;

  3. 将输出重定向到文件。

  4. 共享此文件。