我正在尝试配置我的服务器phpmyadmin,使其只能从本地主机访问,而不能从远程访问。
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Options FollowSymLinks
DirectoryIndex index.php
</Directory>
所以,当我从远程访问phpmyadmin时,我得到了403禁止,这很好,但当我从localhost访问phpmyadmin时(即从使用远程桌面的服务器),我仍然得到403,而我认为这应该给予从localhost访问phpmyadmin。
谢谢你
3条答案
按热度按时间jrcvhitl1#
我猜您使用的是Apache 2.4.x。在2.2和2.4之间,访问控制的语法发生了变化。您使用的
Order
和Deny
语法适用于Apache 2.2,但不适用于2.4。在2.4中,它将类似于:Reference from Apache upgrade doc和Access Control docs中的一个或多个。
pw136qt22#
我认为这应该工作,并使它,使您只能访问它在本地,它应该是这样的东西大部分,但:
kmynzznz3#
逻辑错误
你们每个人都犯了一个大错。
PhpMyAdmin不是一个服务器,它只是一个以PHP脚本形式编写的客户端,由某个HTTP服务器(本例中为Apache)提供服务。
您想要艾德和其他人建议的是尝试禁用对HTTP服务器的
phpmyadmin
vhost的访问,但仍然可以通过终端的mysql
命令,使用任何其他客户端登录到基本服务器,登录到GUI客户端(如MySQL Workbench)或IDE的内置DB客户端。逻辑在哪里?当然,您可以同时使用这两种技术(HTTP安全和MySQL安全),但是没有第二种技术,您的数据库仍然是不安全的。**PhpMyAdmin只是一个客户端!**它甚至有自己的机制来控制访问,但如果有人使用任何其他客户端(上面提到的),您的努力将是绝对没有价值的)。
溶液:
为了维护你的情况下,你应该创建一个专用的MySQL帐户与
localhost
访问(我可以床,在写这篇文章的时刻,它是/是%
,这意味着全球),然后MySQL将控制所有传入的连接,以检查他们是否来自本地机器或来自世界。只是不要忘记删除具有全局访问权限的帐户(
%
),并在所有更改后刷新权限。另外,我总是建议创建一个用户,该用户拥有对一个专用数据库(ofc,而不是
root
)的所有权限。这样,即使您只是在许多数据库中工作的管理员,您也可以将意外更改其他数据库的风险降到最低。(专业提示,好的密码管理员将是您友好的幽灵守卫)。我建议你在谷歌上搜索一下,全面了解一下这个主题,因为它对数据库安全非常重要,但是如果你从第一个答案开始就实现简单的解决方案,这也足够了。在MySQL上使用
localhost
限制,最好在防火墙端设置3306
端口阻塞,是使用本地安装的PhpMyAdmin脚本100%安全地访问数据的完美解决方案(如果可能的话)。下面引用another post的答案
第一个
P.S.你甚至不需要为此写SQL命令,你可以用... PhpMyAdmin为每个用户更改它。