如何使用本地 phpMyAdmin 客户端访问远程服务器?
Posted
技术标签:
【中文标题】如何使用本地 phpMyAdmin 客户端访问远程服务器?【英文标题】:How to access remote server with local phpMyAdmin client? 【发布时间】:2013-05-23 23:40:30 【问题描述】:假设有一个远程服务器,并且我的计算机上本地安装了 phpMyAdmin 客户端。如何通过 phpMyAdmin 客户端访问该服务器并对其进行管理?那可能吗?
【问题讨论】:
您也可以在本地安装phpmyadmin
docker 镜像并连接到您的远程 mysql 服务器。更多详情here:docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
【参考方案1】:
可以,但是需要更改phpMyAdmin的配置,看这个帖子: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin
如果由于任何原因链接失效,您可以使用以下步骤:
找到phpMyAdmin的配置文件,名为config.inc.php
找到 $cfg['Servers'][$i]['host']
变量,并将其设置为远程服务器的 IP 或主机名
找到$cfg['Servers'][$i]['port']
变量,并将其设置为远程mysql端口。通常这是3306
找到$cfg['Servers'][$i]['user']
和$cfg['Servers'][$i]['password']
变量并将它们设置为远程服务器的用户名和密码
如果没有正确的服务器配置,连接可能会比本地连接慢,例如,使用 IP 地址而不是主机名可能会稍微快一些,以避免服务器必须从主机名中查找 IP 地址。
另外,请记住,当您这样连接时,您的远程数据库的用户名和密码以纯文本形式存储,因此您应该采取措施确保没有人可以访问此配置文件。或者,您可以将用户名和密码变量留空,以便在每次登录时提示输入它们,这样更安全。
【讨论】:
您还需要让数据库实例上的防火墙允许流量,并且数据库服务器上的用户具有远程访问权限。 我可以在这里问一个问题吗?作为我的新手,我很好奇我想在浏览器中输入什么形式的链接,以便通过 phpMyAdmin 访问数据库,该数据库安装在我自己托管网站的客户的服务器上。【参考方案2】:您可以在 phpMyAdmin 安装的 config.inc.php 文件中进行设置。
$cfg['Servers'][$i]['host'] = '';
【讨论】:
【参考方案3】:只需在底部的/etc/phpmyadmin/config.inc.php
文件中添加以下行:
$i++;
$cfg['Servers'][$i]['host'] = 'HostName:port'; //provide hostname and port if other than default
$cfg['Servers'][$i]['user'] = 'userName'; //user name for your remote server
$cfg['Servers'][$i]['password'] = 'Password'; //password
$cfg['Servers'][$i]['auth_type'] = 'config'; // keep it as config
您将获得Current Server:
下拉菜单,其中127.0.0.1
和您提供的$cfg['Servers'][$i]['host']
可以在服务器之间切换。
更多详情:http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/
【讨论】:
$i++
很重要,因为这不会使我们失去与默认localhost
的数据库连接。
在 phpMyAdmin 中设置后,我还必须按照this 帖子中的步骤使其工作。
/etc/phpmyadmin/config.inc.php
是要更改的正确文件
上述方法是绝对正确的,但是为什么你们都没有告诉我我必须添加或获取它在远程mySql中添加了我的IP地址。否则它将无法正常工作。请朋友们也注意这一点
如果有人在 Apple 系统上工作,那么 config.inc.php
文件位于 Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.php
文件中。【参考方案4】:
正如其他答案所指出的那样,当然可以从本地 phpMyAdmin 实例访问远程 MySQL 服务器。为此,您必须configure the remote server's MySQL server to accept remote connections,并允许 MySQL 正在侦听的端口号的流量通过防火墙。我更喜欢涉及SSH Tunnelling 的稍微不同的解决方案。
以下命令将建立一个 SSH 隧道,它将所有从本地机器到 3307 端口的请求转发到远程机器上的 3306 端口:
ssh -NL 3307:localhost:3306 root@REMOTE_HOST
出现提示时,您应该输入远程计算机上 root 用户的密码。这将打开隧道。如果你想在后台运行它,你需要添加-f
参数,并在你的本地机器和远程机器之间设置Passwordless SSH。
SSH 隧道工作后,您可以通过修改/etc/phpmyadmin/config.inc.php
文件将远程服务器添加到本地 phpMyAdmin 中的服务器列表中。将以下内容添加到文件末尾:
$cfg['Servers'][$i]['verbose'] = 'Remote Server 1'; // Change this to whatever you like.
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = '3307';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['compress'] = FALSE;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$i++;
我写了一篇更深入的blog post 来说明这一点,以防您需要更多帮助。
【讨论】:
我认为这是安全的解决方案。如果不是绝对必要,打开 mySQL 以直接远程访问通常被认为是一种糟糕的安全做法。 c.hill 的回答不太正确。请注意:绑定地址必须设置为mysql my.cnf文件中的环回地址。 无需在远程主机上成为 root。这座桥工作得很好,谢谢!不过,我不太确定配置,但更喜欢 Suresh Kamrushi 的回答。$++
绝对应该是第一行,而不是最后一行,至少对于我的默认 phpmyadmin.conf。
我刚遇到一个需要更改 $cfg['Servers'][$i]['auth_type'] = 'config'; // 将其作为配置保存到 $cfg['Servers'][$i]['auth_type'] = 'cookie'; // 将其保留为配置。所以谢谢你的提示!
最佳解决方案!【参考方案5】:
关注这篇博文。你可以很容易地做到这一点。 https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/
文件 config.inc.php 包含您的 phpMyAdmin 安装的配置设置。它使用一个数组来存储它可以连接到的每台服务器的配置选项集,默认情况下只有一个,您自己的机器或本地主机。为了连接到另一台服务器,您必须将另一组配置选项添加到配置数组。您必须编辑此配置文件。
首先打开 phpMyAdmin 文件夹中的 config.inc.php 文件。在 wamp 服务器中,您可以在 wamp\apps\phpmyadmin 文件夹中找到它。然后将以下部分添加到该文件中。
$i++;
$cfg['Servers'][$i]['host'] = 'hostname/Ip Adress';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['compress'] = FALSE;
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'username';
$cfg['Servers'][$i]['password'] = 'password';
我们来看看这个变量是什么意思。
$i++ :- Incrementing variable for each server
$cfg[‘Servers’][$i][‘host’] :- Server host name or IP adress
$cfg[‘Servers’][$i][‘port’] :- MySQL port (Leave a blank for default port. Default MySQL port is 3306)
$cfg[‘Servers’][$i][‘socket’] :- Path to the socket (Leave a blank for default socket)
$cfg[‘Servers’][$i][‘connect_type’] :- How to connect to MySQL server (‘tcp’ or ‘socket’)
$cfg[‘Servers’][$i][‘extension’] :- php MySQL extension to use (‘mysql’ or ‘msqli’)
$cfg[‘Servers’][$i][‘compress’] :- Use compressed protocol for the MySQL connection (requires PHP >= 4.3.0)
$cfg[‘Servers’][$i][‘auth_type’] :- Method of Authentication
$cfg[‘Servers’][$i][‘username’] :- Username to the MySQL database in remote server
$cfg[‘Servers’][$i][‘password’] :- Password to the MySQL database int he remote server
添加此配置部分后,重新启动服务器,现在您的 phpMyAdmin 主页将发生变化,它将显示一个选择服务器的字段。
现在您可以通过输入该数据库的用户名和密码来选择您的服务器并访问您的远程数据库。
【讨论】:
可以更准确地解释你的答案。链接答案很好,但如果链接因任何原因损坏,则可能无法访问。【参考方案6】:如回答c.hill 回答中所述,如果您需要安全解决方案,我建议您打开通往您服务器的 SSH 隧道。
以下是 Windows 用户的方法:
从Putty website 下载 Plink 和 Putty,并将文件放在您选择的文件夹中(在我的示例中为 C:\Putty
)
打开 Windows 控制台并 cd 到 Plink 文件夹:
cd C:\Putty
打开SSH隧道并重定向到3307端口:
plink -L 3307:localhost:3306 username@server_ip -i path_to_your_private_key.ppk
地点:
3307 是您要重定向到的本地端口 localhost是远程服务器上MySQL DB的地址(默认为localhost) 3306 是远程服务器上 PhpMyAdmin 使用的端口(默认为 3306)最后你可以设置 PhpMyAdmin:
-
通过在 config.inc.php 末尾添加以下行,将远程服务器添加到本地 PhpMyAdmin 配置
要添加的行:
$i++;
$cfg['Servers'][$i]['verbose'] = 'Remote Dev server';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '3307';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['compress'] = FALSE;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
-
您现在应该可以通过
http://127.0.0.1/phpmyadmin
连接
如果您不想每次需要连接到远程服务器时都打开控制台,只需创建一个批处理文件(通过将 2 个命令行保存在 .bat 文件中)。
【讨论】:
【参考方案7】:在 Ubuntu 中
您只需要修改 PHPMyAdmin 文件夹中的单个文件,即“config.inc.php”。只需在“config.inc.php”中添加以下行。
文件位置:/var/lib/phpmyadmin/config.inc.php
或
/etc/phpmyadmin/config.inc.php
也许你没有编辑该文件的权限,请使用此命令授予权限
sudo chmod 777 /var/lib/phpmyadmin/config.inc.php
或者(在不同的系统中,您可能需要检查这两个位置)
sudo chmod 777 /etc/phpmyadmin/config.inc.php
然后将代码复制并粘贴到您的config.inc.php
文件中
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['verbose'] = 'Database Server 2';
$cfg['Servers'][$i]['host'] = '34.12.123.31';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
并使用您的服务器详细信息进行适当的更改
【讨论】:
【参考方案8】:转到最底部的文件\phpMyAdmin\config.inc.php,更改主机详细信息,如主机、用户名、密码等。
【讨论】:
【参考方案9】:我会将此添加为评论,但我的声誉还不够高。
在 4.5.4.1deb2ubuntu2 版本下,我猜是 4.5.x 或更高版本的任何其他版本。根本不需要修改 config.inc.php 文件。而是在 conf.d 下多走一个目录。
创建一个扩展名为“.php”的新文件并添加行。这是一种更好的模块化方法,并且隔离了每个远程数据库服务器的访问信息。
【讨论】:
【参考方案10】:删除/etc/http/conf.d/phpMyAdmin.conf
的完整条目
在上面的文件中,下面是完整的,
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
#ADD following line:
Require all granted
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
#CHANGE following 2 lines:
Order Allow,Deny
Allow from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
那么,
在 MySQL 提示符下运行以下命令,
GRANT ALL ON *.* to root@localhost IDENTIFIED BY 'root@<password>'
GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'root@<password>'
供参考:Allow IP to Access Secured PhpMyAdmin
【讨论】:
【参考方案11】:方法一(多服务器)
首先,让我们备份原始配置。
sudo cp /etc/phpmyadmin/config.inc.php ~/
现在在 /usr/share/doc/phpmyadmin/examples/ 中,您将看到一个文件 config.manyhosts.inc.php。只需复制到 /etc/phpmyadmin/ 使用下面的命令:
sudo cp /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php \
/etc/phpmyadmin/config.inc.php
编辑config.inc.php
sudo nano /etc/phpmyadmin/config.inc.php
搜索:
$hosts = array (
"foo.example.com",
"bar.example.com",
"baz.example.com",
"quux.example.com",
);
并添加您的 ip 或主机名数组保存(在 nano CTRL+X 中按 Y)并退出。完成
方法二(单服务器) 编辑 config.inc.php
sudo nano /etc/phpmyadmin/config.inc.php
搜索:
/* Server parameters */
if (empty($dbserver)) $dbserver = 'localhost';
$cfg['Servers'][$i]['host'] = $dbserver;
if (!empty($dbport) || $dbserver != 'localhost')
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['port'] = $dbport;
并替换为:
$cfg['Servers'][$i]['host'] = '192.168.1.100';
$cfg['Servers'][$i]['port'] = '3306';
记得把192.168.1.100换成你自己的mysql ip server。
对不起我的英语不好(谷歌翻译有责任:D)
【讨论】:
【参考方案12】:在安装了 Wamp Server 的 Windows 中,您可能会找到配置文件
C:\wamp64\apps\phpmyadmin4.8.4\config.inc.php
根据需要更改下一行
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = 3306;//$wampConf['mysqlPortUsed'];
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
【讨论】:
【参考方案13】:找到文件libraries/config.default.php
然后找到$cfg['AllowArbitraryServer'] = false;
然后将其设置为 true
注意:
在 ubuntu 上的路径 /usr/share/phpmyadmin/libraries/config.default.php
然后你会在 PHPMyAdmin 主页面中找到一个新的文件名 SERVER,你可以为本地数据库添加任何 IP 或 localhost。
【讨论】:
以上是关于如何使用本地 phpMyAdmin 客户端访问远程服务器?的主要内容,如果未能解决你的问题,请参考以下文章
使用本地 phpMyAdmin 通过 Xampp 连接远程数据库
我无法通过本地 phpmyadmin 访问远程 mysql 服务器