最近我正在处理一个本地项目,并将其与在线服务器同步。
问题是,现在它涉及到数据库功能。这意味着每当我在本地做出数据库更改时,我必须访问网站的cPanel,进入PHPMyAdmin,删除整个数据库,并复制本地版本导出的SQL查询。
使用本地-远程设计逻辑,有没有更容易的方法来处理MySQL数据库?
最近我正在处理一个本地项目,并将其与在线服务器同步。
问题是,现在它涉及到数据库功能。这意味着每当我在本地做出数据库更改时,我必须访问网站的cPanel,进入PHPMyAdmin,删除整个数据库,并复制本地版本导出的SQL查询。
使用本地-远程设计逻辑,有没有更容易的方法来处理MySQL数据库?
这是开发中更具挑战性的方面之一,当你有多个开发人员和潜在的多个分支和/或服务器时,环境经常会发生变化。然而,由于我们不知道确切情况,很难说它会对您产生什么影响。
你当前操作的一个元素可能是消除登录到各种接口的需求,并使用脚本来实现你需要的内容 - 更少的手动操作;更多的自动化... 最基本的是,你可以创建一个 PHP 脚本:
一般选项:
更新而非重建
除非所有数据都发生了更改(并且需要更改),否则没有必要在任何环境中删除整个数据库并重新构建。最基本的是,需要更改结构/模式而不是完全重建。
复制
可以使用主-主或主-从复制同步 MySQL 数据库,但有时这在某些环境中过度,除非非常小心地管理,否则可能会破坏功能。如果你在本地(在开发环境中)进行了更改,它们可能会破坏你的远程站点功能...
使用框架工具
如果你正在使用现代框架,其中许多都带有工具来促进数据库更新和更新(以及潜在的回滚),但通常它们并不完美,因为你可能需要更新特定的数据或表格,这些不能轻松地回滚。
我的当前设置
¬ multiple local developers
¬ multiple dev branches
¬ development
¬ staging server
live
php migrate.php server/branch update
或者:
php migrate.php server/branch rollback
这个可以为基本设置简化,但是我不知道如何做到更简单,除非了解更多的情况。 默认情况下,也值得在dba.stackexchange.com上提出这个问题,因为你将获得精确的面向数据库的回复。
我会在远程制作一个PHP页面,其中包含一个文本框,可以输入ALTER语句,您只需粘贴并单击即可。如果通过80端口访问该页面,则需要使用强制https重定向、密码和IP验证进行保护,以便只有您才能运行它-这仅需要几行代码。
是的。但是!
首先,您必须在远程服务器上创建一个MySQL用户,该用户被允许从您的本地PC连接,或者如果您勇敢的话,从任何IP连接。例如:think123@yourIp 或 think123@%,使用非常强的密码。
如果您无法或不被允许执行此操作,则答案为否。有些主机允许此操作,而有些则不允许。请查看您的cPanel。
如果他们允许此操作,则您可以从运行在本地计算机上的phpMyAdmin中访问远程服务器。但是,您必须对本地phpMyAdmin进行一些配置更改,以通知它有关其他可能的连接。
在 \wamp\alias\phpmyadmin.conf 中,应该有一个类似于以下内容的部分:
$i = 0;
/*
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$i = 0;
/*
* First server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
/*
* Second Server
*/
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'REMOTE_SERVERS_IP';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;