介绍
PhpMyAdmin是一个基于Web的前端,用于以视觉友好的方式轻松管理MySQL数据库。 您可以设置此软件远程管理VPS上的数据,无需shell访问。
虽然phpMyAdmin是有用的,如果没有正确配置,它也可能是不安全的。 本指南将介绍如何在Ubuntu 12.04计算机上使用SSL和访问限制在LAMP(Linux,Apache,MySQL和PHP5)上安装phpMyAdmin。
初始设置
本指南假定您对root用户拥有Ubuntu 12.04服务器,并且已经配置了LAMP。 按照本指南在Ubuntu 12.04安装Apache,MySQL和PHP如果您尚未设置起来。
登录到您的服务器,并准备好后继续。
如何在Ubuntu上设置PhpMyAdmin
Ubuntu 12.04在其默认存储库中包含phpMyAdmin。 使用此命令安装:
sudo apt-get install phpmyadmin
选择“Apache2”作为在安装期间配置的服务器。 选择“是”以允许自动配置phpMyAdmin数据库。
输入在安装过程中为MySQL根用户设置的密码,然后为phpMyAdmin进程指定要用于登录的密码。
配置Apache加载PhpMyAdmin
告诉Apache来源phpMyAdmin配置为了允许访问应用程序。
使用root权限编辑主要的Apache配置文件:
sudo nano /etc/apache2/apache2.conf
滚动到文件的底部并键入以下指令,使Apache读取phpMyAdmin特定的配置文件:
Include /etc/phpmyadmin/apache.conf
重新启动服务器以使更改生效:
sudo service apache2 restart
您可能会收到以下消息:
[warn] The Alias directive in /etc/phpmyadmin/apache.conf at line 3 will probably never match because it overlaps an earlier Alias. apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
这些只是警告,可以安全地忽略。
如何为PhpMyAdmin设置.htaccess
保护phpMyAdmin的第一步是设置.htaccess限制。 这需要在访问phpMyAdmin界面之前进行密码登录。
首先,配置phpMyAdmin apache配置以允许使用.htaccess文件。 使用root权限打开phpMyAdmin apache配置文件:
sudo nano /etc/phpmyadmin/apache.conf
在读取“DirectoryIndex index.php”的行下,插入一行显示“AllowOverride All”的行:
<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All . . .
保存并关闭文件。
现在,创建一个phpMyAdmin专用的.htaccess文件:
sudo nano /usr/share/phpmyadmin/.htaccess
将以下文本插入文件:
AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
保存并关闭文件。
此更改使我们的网站在“/etc/phpmyadmin/.htpasswd”中查找有效登录凭据的列表。
我们可以使用以下命令创建该文件和登录帐户。 替换您要使用的用户名:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd user_name
系统将要求您为新用户选择密码。
现在,重新启动Apache以启用访问限制:
sudo service apache2 restart
如何使用PhpMyAdmin设置SSL
我们将在Web界面和服务器之间传递敏感数据,因此我们需要设置SSL,以确保我们的数据不以纯文本格式发送。
首先,告诉Apache启用SSL支持并重新启动服务器以使用以下命令实施更改:
sudo a2enmod ssl sudo service apache2 restart
创建一个目录以存储我们的SSL证书,然后使用以下命令创建密钥和证书:
sudo mkdir /etc/apache2/ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
这将创建一个有效期为365天的证书。 你会被问到一些问题。 尽可能地填写他们。
你必须正确回答的问题是,“通用名称”。 使用您的域名或服务器IP地址作为此字段。
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:NYC Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc Organizational Unit Name (eg, section) []:Dept of Merriment Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:webmaster@awesomeinc.com
配置Apache以使用SSL证书
现在您已经创建了SSL证书,您需要告诉Apache使用SSL。 使用root权限打开默认虚拟主机配置文件:sudo nano /etc/apache2/sites-available/default
首先将“<VirtualHost *:80>”声明更改为“<VirtualHost *:443>”,这是默认的SSL端口。
更改后,在VirtualHost定义中添加一个“ServerName”部分,该部分指定在创建SSL证书时使用的域名或IP地址,后跟“:443”:
<VirtualHost *:443> ServerAdmin webmaster@localhost ServerName example.com:443 . . .
在关闭文件之前,在“</ VirtualHost>”结束标记之前添加以下行:
SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key
保存并关闭文件。
在PhpMyAdmin中强制SSL
我们现在必须告诉phpMyAdmin每当连接时都必须使用SSL。
我们将在phpMyAdmin配置文件中执行此操作。 使用root权限打开文件以进行编辑:
sudo nano /etc/phpmyadmin/config.inc.php
滚动到文件的底部并添加以下行:
$cfg['ForceSSL'] = true;
这是需要为phpMyAdmin SSL的唯一的行。
保存并关闭文件。
启用SSL更改
如果尚未启用,请使用以下命令启用站点:
sudo a2ensite default
重新启动Apache服务以实现更改:
sudo service apache2 restart
查看结果
要访问phpMyAdmin界面,请使用浏览器导航到您的域名或服务器IP地址,后跟“/ phpmyadmin”:
example.com/phpmyadmin
系统将要求您输入您使用.htaccess文件设置的用户名和密码。
然后,您可能会看到一个屏幕抱怨SSL证书不受信任。
这是因为我们自己创建了SSL证书,没有通过SSL证书颁发机构。 这是我们的目的。
点击“继续”或“继续”继续。 您将再次要求输入.htaccess密码,因为我们现在尝试通过SSL访问该网站。
您现在将看到phpMyAdmin登录页面,您可以在其中输入在安装过程中设置的凭据。
Username: root Password: your_phpmyadmin_password
您现在将被放入主phpMyConfig管理页面: