在服务器端(Laravel)中自动替换mysql db dump中的用户密码

保罗·文森特·贝冈

用例

要设置开发环境,需要对应用程序数据库进行mysql转储。转储来源是生产数据库。

问题

我不想将转储提供给任何人,因为它包含(散列的)用户密码。

解决思路

在授予对转储的访问权限之前,请在服务器端替换所有用户密码(为开发目的的所有用户使用一个密码是可以的)。

环境

  • Laravel应用
  • MySQL数据库
  • bash脚本可以在Capistrano上运行,也可以通过ssh在服务器上手动执行

有什么想法如何以一种聪明的方式解决这个问题吗?

转储示例(仅用户表)

# ************************************************************
# Sequel Pro SQL dump
# Version 4541
#
# http://www.sequelpro.com/
# https://github.com/sequelpro/sequelpro
#
# Host: 127.0.0.1 (MySQL 5.7.12)
# Datenbank: app
# Erstellt am: 2017-01-04 14:22:35 +0000
# ************************************************************


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


# Export von Tabelle users
# ------------------------------------------------------------

DROP TABLE IF EXISTS `users`;

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `role` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `tenant_id` int(10) unsigned DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_tenant_id_role_unique` (`email`,`tenant_id`,`role`),
  KEY `users_tenant_id_index` (`tenant_id`),
  CONSTRAINT `users_tenant_id_foreign` FOREIGN KEY (`tenant_id`) REFERENCES `tenants` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;

INSERT INTO `users` (`id`, `role`, `tenant_id`, `name`, `email`, `password`, `remember_token`, `created_at`, `updated_at`)
VALUES
    (1,'admin',1,'appadmin','[email protected]','123$15$g4qKHcS7zHercuNJobfFxOTWGoW7YN.tphFdddGIIEXkrkE8Etxxx',NULL,'2017-01-04 14:19:04','2017-01-04 14:19:04');

/*!40000 ALTER TABLE `users` ENABLE KEYS */;
UNLOCK TABLES;

/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
snitch182

我建议使用sql-way:

create table users_tmp like users;
insert into users_tmp select * from users;
update users_tmp set password='whatever';

然后导入

rename table users_tmp to users;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

性能提示:要在cosmos db中更新单个文档,该如何使用服务器端javascript或.net api?

SSDT:无法连接到主服务器或目标服务器“DB_NAME”。您必须在主服务器或目标服务器“DB_NAME”中拥有一个密码相同的用户

如何在 Laravel 中处理服务器端异常

如何在 Laravel 中验证 X 可编辑请求(服务器端)

如何在laravel 5.4中进行服务器端api验证

在NextJS中从服务器端重定向

Java中FTP的服务器端实现

在Meteor中创建服务器端文件

在服务器端Dynamicscrm中控制UTC时间

在角度服务器端渲染中渲染图像

NodeJS中requestAnimationFrame()的服务器端实现

在服务器端JSP中访问javascript元素

Cloud Firestore中的服务器端锁

在jQuery中访问服务器端的数组

Angular中的服务器端渲染

to_csv 函数中的服务器端加密

服务器端的用户确认

存储和验证用户:LDAP服务器与MySQL DB?

div在服务器端使用C#中的div类在服务器端可见false

仅在更改密码时才在 DB 中编辑用户更改密码。我在这里缺少什么?

首次新用户登录需要在HANA DB中更改密码

如何在java db(derby)中添加用户名和密码

MySQL 社区服务器 8.0.16 - django.db.utils.OperationalError:(1045,“用户访问被拒绝(使用密码:是)”)

无法在Spring Cloud配置服务器中禁用解密服务器端

像NodeJS这样的服务器端JavaScript中的“服务器”是什么?

Laravel DB查询无法在服务器中运行,但在本地主机中运行良好

如何在Laravel 5.2中的数据表服务器端处理中访问json对象/数据?

如何在Angular 2 Meteor中从服务器端检测并注销空闲用户?

在Recaptcha中验证服务器端用户响应的目的是什么?