我有一个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语句)
-
查找要共享的表的列表。
-
编写一个shell脚本登录到mysql,并逐个获取每个表的DDL。
DESC表名称1;
DESC表名称2;
-
将输出重定向到文件。
-
共享此文件。