Php 如何将WP mysql user/pass从localhost更改为server?

Php 如何将WP mysql user/pass从localhost更改为server?,php,mysql,wordpress,Php,Mysql,Wordpress,我刚刚在本地主机上创建了一个WP站点,并准备将其上传到生产服务器。这两个环境运行在具有相同库和php版本的相同操作系统上,但我为本地mysql安装设置的密码与生产服务器不同。所以,我想上传整个WP文件,一旦进入prod,我可以修改WP-config.php并更改db,但如果我不得不再次将代码拉到本地或迁移到另一台服务器,这从长远来看似乎是无法管理的 因此,我的问题是如何做到这一点?您可以直接从数据库更改用户/密码。以下是步骤 在数据库中打开wp_users表。 选择要编辑的用户,然后单击编辑链接

我刚刚在本地主机上创建了一个WP站点,并准备将其上传到生产服务器。这两个环境运行在具有相同库和php版本的相同操作系统上,但我为本地mysql安装设置的密码与生产服务器不同。所以,我想上传整个WP文件,一旦进入prod,我可以修改WP-config.php并更改db,但如果我不得不再次将代码拉到本地或迁移到另一台服务器,这从长远来看似乎是无法管理的


因此,我的问题是如何做到这一点?

您可以直接从数据库更改用户/密码。以下是步骤

在数据库中打开wp_users表。 选择要编辑的用户,然后单击编辑链接。 使用MD5更新密码,使用您的电子邮件地址更新用户电子邮件。 现在尝试使用更新的凭据登录。
希望这对您有所帮助。

您可以通过在functions.php中添加此代码来更改特定用户的密码

wp_set_password$password$user_id

注意:一旦您重置为当前密码,请删除上述代码,否则每当用户访问您的网站时,将执行此代码

您可以使用插件从数据库更改用户名

将其安装在本地设置和生产服务器上。 从本地WP安装创建导出文件。 在生产WP安装时导入它,您的数据将正确导出。
请注意,我假设您的生产服务器上安装了WordPress。如果不是这样,您首先必须在那里安装WordPress,然后按照步骤操作。

在“wp config.php”中为“localhost”和“production”服务器分别设置数据库参数,如下所示

if($_SERVER['SERVER_NAME']=="localhost") //change if local server name is different
{
    $db_name='local_db_name';
    $db_username='local_db_username';
    $db_password='local_db_password';
    $db_host='local_db_host';
}
else // production server database credentials
{
    $db_name='production_db_name';
    $db_username='production_db_username';
    $db_password='production_db_password';
    $db_host='production_db_host';      
}

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', $db_name);

/** MySQL database username */
define('DB_USER', $db_username);

/** MySQL database password */
define('DB_PASSWORD', $db_password);

/** MySQL hostname */
define('DB_HOST', $db_host);

希望这有帮助。

转到Phpmyadmin,选择您的数据库,然后单击导出选项卡 在那里,您可以以所需格式导出数据,然后使用“导入”选项卡将其导入回


对于页面或其他文件系统数据,您可以使用filezilla或其他ftp工具。

我将如何做到这一点,如下所示:

//::1 is localhost on servers using ipv6, 127.0.0.1 is for ipv4
$localIpList      = ['::1', '127.0.0.1'];
$databasePassword = 'productionPassword';

if (in_array($_SERVER['SERVER_ADDR'], $localIpList)) {
    $databasePassword = 'localDevPassword';
}

这样做可以使它非常容易维护,而且服务器ADDR相当可靠。如果您使用的是不同于本地主机的开发服务器,那么使用带有in_array的阵列可以使您在将来添加IP变得非常容易。

正确的处理方法是使用服务器环境变量:

我强烈建议您不要像其他人提到的那样,将密码或任何其他私人信息直接存储在wordpress wp配置文件中

您的本地设置将具有如下环境变量:

SetEnv DB_USER mylocaldbuser
SetEnv DB_NAME mylocaldbname
SetEnv DB_HOST mylocaldbhost
SetEnv DB_PASS mylocaldbpass
define('DB_NAME',      $_SERVER['DB_NAME']);
define('DB_USER',      $_SERVER['DB_USER']);
define('DB_PASSWORD',  $_SERVER['DB_PASS']);
define('DB_HOST',      $_SERVER['DB_HOST']);
然后,您的生产服务器将拥有自己的一组环境变量:

SetEnv DB_USER myproddbuser
SetEnv DB_NAME myproddbname
SetEnv DB_HOST myproddbhost
SetEnv DB_PASS myproddbpass
最后,您的wp-config.php文件如下所示:

SetEnv DB_USER mylocaldbuser
SetEnv DB_NAME mylocaldbname
SetEnv DB_HOST mylocaldbhost
SetEnv DB_PASS mylocaldbpass
define('DB_NAME',      $_SERVER['DB_NAME']);
define('DB_USER',      $_SERVER['DB_USER']);
define('DB_PASSWORD',  $_SERVER['DB_PASS']);
define('DB_HOST',      $_SERVER['DB_HOST']);

通过这种方式设置,您的wp-config.php文件不会在不同的环境中更改,因此您无需担心每次部署到prod时都会对其进行编辑。您也会因为没有公开wp-config中的任何敏感信息而犯下谨慎错误,它位于公共目录中。

这意味着两个prod/local mysql数据库将具有相同的用户pass。。但是在我的示例中,他们没有。你是说要将所有sql表从开发服务器上载到生产服务器吗?除了开发服务器和生产服务器之间不同的用户表之外?他要求更改mysql密码,而不是wordpress用户的密码。我也是这样做的,只是有时候你需要检查$服务器['HTTP\U主机']。还有一件事——在本地服务器和生产服务器之间进行同步,在大多数情况下,您不需要同步根文件。仅仅是/wp内容/文件夹插件、主题和上传的竞争。当然还有数据库内容。这种方法的缺点是在wp config.php中公开敏感凭据。我同意,但这是WordPress的默认设置,WordPress本身将凭据保存在这里。问题是如何使用相同的'wp config.php',而不是更高端的安全性。这看起来更好,但设置env不会自动用数据填充$\u服务器变量。您是说$_ENV吗?嗯,您应该能够使用apache SetEnv指令在apache配置中设置$_服务器变量。