我们可以在命令行工具下面管理 MySQL / MariaDB 数据库。想要个图形界面的话,可以使用 phpMyAdmin,通过浏览器直接管理服务器的数据库管理系统,添加用户,设置密码,创建数据库,导入导出数据等等。
安装
在很多 Linux 类型的系统上都可以使用包管理工具去安装 phpMyAdmin,比如在 CentOS 系统里,先为系统安装 epel 仓库,然后就可以通过 yum install phpmyadmin 安装了。不过我们之前搭建的 Web 环境,用的 php 版本是 5.6,跟 phpmyadmin 依赖的包有冲突,它需要一个低版本的 php ,所以我们只能使用手工安装的方法。
先把 phpMyAdmin 下载到系统上,http://www.phpmyadmin.net/ ,点击 Download 会带你到下载的页面,页面上的 Direct link 是直接下载 phpMyAdmin 的链接,复制一下这个复制的地址,然后使用 curl 去下载它,像这样:
cd ~ curl -L http://jaist.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.3.8/phpMyAdmin-4.3.8-all-languages.zip -o phpmyadmin.zip
先进入到用户主目录的下面,然后用 curl ,后面加了一个 -L 参数,指定了下载的地址,然后用一个 -o 参数,指定了一下,下载以后这个文件的名字。下载完成以后,用 ls 命令查看一下目录下的文件,你会看到 phpmyadmin.zip,解压 .zip 文件,先去安装一个 unzip 工具:yum install unzip ,然后:
unzip phpmyadmin.zip
再用 ls 命令查看一下当前目录下的东西,会出现解压之后的目录,目录的名称取决于你下载的 phpMyAdmin 的版本,我这里现在是 phpMyAdmin-4.3.8-all-languages ,把这个目录复制一份到 nginx 定义的服务器的根目录下面,为了安全一点,你可以把目录的名字修改成一个不常用的名字,在之前的配置 nginx 的文章里,定义了一个服务器,它的根目录是 /vagrant/main/public ,所以可以这样:
mv phpMyAdmin-4.3.8-all-languages /vagrant/main/public/phpmyadmin
现在,打开浏览器,输入为 nginx 服务器绑定的主机名,后面加上 phpMyAdmin 所在的目录名,http://ninghao.dev/phpmyadmin 。显示了一个错误:
引起这个错误的原因是 php 没有权限把 session 写到指定的目录里,这些 session 文件保存的位置是在 php 的配置文件里定义的,用我们前面测试 php 创建的 phpinfo.php 可以查看这个目录的位置,在浏览器里打开这个文件,搜索 session.save_path:
session.save_path /var/lib/php-fpm/session
这个 /var/lib/php-fpm/session 是保存 session 用的目录,这个目录现在属于 root 这个用户,我们的 php-fpm 是用 vagrant 用户运行的,所以,你可以把这个目录的拥有者改成 vagrant :
chown vagrant /var/lib/php-fpm/session
完成以后,可以用 ls -la 命令查看这个目录的拥有者。回到浏览器,刷新,会显示一个登录的页面,使用 MySQL / MariaDB 系统里的用户与密码登录一下。
配置
登录到 phpMyAdmin 以后,在页面底部会显示 “ 配置文件现在需要一个短语密码。” 或 “ The configuration file now needs a secret passphrase (blowfish_secret). ” , 你需要在 phpMyAdmin 的配置文件里的 blowfish_secret 这个配置里面去设置一个密码,phpMyAdmin 会用到这个密码,加密 Cookie 。phpMyAdmin 的相关配置要放在一个叫 config.inc.php 的文件里,如果这个文件不存在,你可以复制一份 config.sample.inc.php,命名为 config.inc.php 。进入到 phpMyAdmin 所在的目录以后:
cp config.sample.inc.php config.inc.php
然后去生成一串随机的密码,可以使用 openssl 去做:
openssl rand -base64 32
返回:
AhONip2q+KmANQJfbzx7NC+j+hsGRKuhuQi8ClJG4mk=
复制返回来的随机密码,然后打开 config.inc.php,搜索 $cfg['blowfish_secret'] ,把复制的密码粘贴到这个配置的后面。
$cfg['blowfish_secret'] = 'AhONip2q+KmANQJfbzx7NC+j+hsGRKuhuQi8ClJG4mk=';
保存配置文件,回到浏览器,重新登录,警告就会消失了。
安全
在生产环境下使用 phpMyAdmin,所有人也都可以看到 phpMyAdmin 的登录页面,虽然他们不知道你的数据库的用户名跟密码,不过还是挺吓人的。我们可以配置一下 nginx ,在显示 phpMyAdmin 登录页面之前,验证一下用户的身份,同样需要输入用户名还有密码,成功以后,才能进入到 phpMyAdmin 的登录页面,然后使用数据库管理系统上的用户登录。
我们要做的是创建一个密码文件,文件里的内容就是用户名与对应的密码,然后再去设置一下 nginx 的服务器配置,访问 phpMyAdmin 的时候,用密码文件里的用户名跟密码验证用户的身份。这个密码需要用 crypt() 加密一下,可以使用 openssl 去做这件事:
openssl passwd
提示你输入要加密的密码,输入好以后,回车,又会提示 Verifying - Password,再输入一次密码。再次回车,会返回加密以后的密码,像这样:
OPgfaLSmAFgQM
复制一下这串加密之后的密码,下面再去创建一个密码文件,进入到 nginx 的配置文件所在的目录:
cd /etc/nginx/conf.d
创建一个文件叫 pma_pass(意思是 phpMyAdmin password ),可以使用 vim :
vim pma_pass
文件里的内容使用 username:password 的形式,像这样:
ninghao:OPgfaLSmAFgQM
打开服务器的配置文件,之前我把 phpmyadmin 放在了 ninghao.dev.conf 这个配置文件定义的服务器的根目录下面,所以,可以打开这个配置文件去编辑一下,在 server 配置区块里面再添加一个 location 区块,去匹配 phpmyadmin 这个目录,然后在这个配置区块里,用 auth_basic 指令设置一个登录窗口的提示,再用 auth_basic_user_file 指令设置一下密码文件的位置:
location /phpmyadmin { auth_basic "Login Please"; auth_basic_user_file /etc/nginx/conf.d/pma_pass; }
重新加载一下 nginx:service nginx reload。现在,当请求查看服务器下面的 phpmyadmin 这个目录的时候,就会先让你用 pma_pass 文件里设置的用户名,还有你设置的密码登录一下,注意这个密码是使用 openssl 加密之前的那个密码。现在,整个配置文件的内容是这样的:
server { listen 80; server_name ninghao.dev www.ninghao.dev; root /vagrant/main/public; index index.php index.html index.htm; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location /phpmyadmin { auth_basic "Login Please"; auth_basic_user_file /etc/nginx/conf.d/pma_pass; } }路径 CentOS phpMyAdmin nginx
评论
皓哥,安装了phpmyadmin访问却显示空白页,查了下说安装 yum install php-mbstring -y即可,结果出现了冲突: Processing Conflict: php56u-mbstring-5.6.4-1.ius.centos7.x86_64 conflicts ph p-mbstring < 5.6,这个要怎么弄呀?
9 年 9 个月 以前
说明你已经安装了更高版本的 mbstring 扩展,你之前配置 php 的时候,安装过这个扩展。问题,可能是 nginx 配置文件的问题,你在 server 区块里添加一个 index index.php index.html;
9 年 9 个月 以前
还是没用
9 年 9 个月 以前
再重新做一次,记得重启 nginx 。
9 年 9 个月 以前
错误越来越多了,现在连访问phpinfo.php都出错了:The page you are looking for is not found.
9 年 9 个月 以前
没事,你再检查一下。1,安装 nginx,2,安装 php-fpm,3,创建 nginx 配置文件(放在 /etc/nginx/conf.d 下面)。4,修改 nginx 的用户为 vagrant,5,修改 php-fpm 的用户也为 vagrant ,6,启动 nginx,7,启动 php-fpm。就是这几步,每次修改了配置文件以后,你需要重新加载服务,用 service xxx reload 命令。
9 年 9 个月 以前
修改nginx的用户为vagrant怎么设置?
9 年 8 个月 以前
session.save_path /var/lib/php/session 我的路径是这个 但是我查找没/session 文件夹 ,于是我创建一下 ,phpmyadmin 安装后无法登陆 但是命令行正常登陆
,phpmyadmin 下方出现报错
9 年 9 个月 以前
Warning in ./libraries/session.inc.php#101
session_start(): open(/var/lib/php/session/sess_8vvnrmj9lm62kqbl6seudigpi679n7l5, O_RDWR) failed: Permission denied (13)
Backtrace
./libraries/session.inc.php#101: session_start()
./libraries/common.inc.php#352: require(./libraries/session.inc.php)
./index.php#12: require_once(./libraries/common.inc.php)
是这个
9 年 9 个月 以前
这是因为目录权限的问题,你可以把 php-fpm 的用户修改成 vagrant ,这个用户是在 /etc/php-fpm.d/www.conf 这个配置文件里修改。然后去把 session 这个目录的拥有者,修改成 vagrant ,可以使用 chmod 命令。像这样:chmod -R vagrant /var/lib/php/session ,完成后,重启 php-fpm 。
9 年 9 个月 以前
没有按照《路径(十四):在本地 CentOS 7 上搭建 Web 开发环境 — PHP》中修改目录权限,所以现在是这样的[root@localhost php-fpm]# ls -la
total 4
drwxr-xr-x. 4 root root 36 Feb 11 01:59 .
drwxr-xr-x. 31 root root 4096 Feb 11 07:46 ..
drwxrwx---. 2 root php-fpm 50 Feb 11 08:11 session
drwxrwx---. 2 root php-fpm 6 Jan 25 00:17 wsdlcache
并且在进入http://ninghao.dev/phpmyadmin时也没有报错,标记一下,方便后面查看
9 年 9 个月 以前
请教:cp config.sample.inc.php config.inc.php后,登陆phpmyadmin提示:“配置文件权限错误,不应任何用户都能修改!”
为什么呢??
9 年 9 个月 以前
chmod -cR 755 phpmyadmin
提示成功了,查看权限仍然没有变
9 年 9 个月 以前
最终你这个问题解决了没?我也遇到同样的问题
9 年 4 个月 以前
可以通过修改phpmyadmin的配置文件解决:
找到phpmyadmin/libraries/config.default.php文件,
把 $cfg[‘CheckConfigurationPermissions’] 修改为false。
8 年 5 个月 以前
皓哥,安装完phpmyadmin后打开页面是空白的,什么都没有。怎么办,急!
9 年 8 个月 以前
没事,一般就是目录权限的问题,你是在服务器上安装的,还是在本地虚拟机上安装的? 检查你的 PHP 的 Session 目录的权限。
9 年 8 个月 以前
将文件复制到网站根目录之后,访问www.xxx.com/phpmyadmin,出现403 Forbidden错误,该怎么解决啊?
9 年 8 个月 以前
您可以查看一下 NGINX 还有 PHP-FPM 输出的错误日志,里面应该会有原因。可以把日志贴到 社区 里面。
9 年 8 个月 以前
我的也是空白页,session目录权限是vagrant
9 年 8 个月 以前
我检查了一下,是 NGINX 的配置里面,少了一行。在处理 PHP 请求的 location 区块里面,添加一行: fastcgi_index index.php;
9 年 8 个月 以前
我把 fastcgi_index index.php;放fastcgi.conf文件里,reload了php-fpm和nginx还是空白
9 年 8 个月 以前
看一下错误日志吧。多数都是因为权限问题。
9 年 8 个月 以前
贴在社区里头了,貌似都是权限问题
9 年 8 个月 以前
最后一步,我一把auth_basic 和auth_basic_user_file放进去,nginx就启动失败
9 年 3 个月 以前
您看看是不是语法写错了,比如结尾少了分号之类的。
9 年 3 个月 以前
按照本我的配置基本都成功了,就是在最后 给phpmyadmin配置身份登录这一部分,按照您的教程做下来,遇到一个问题,就是 输入用户名 密码后,密码要是不对,输入框会提示重新输入,但当我输入正确的密码后,页面就变成了 403 还是404的页面,并不能转到phpmyadmin的登陆页面,这个怎么办呀?
8 年 10 个月 以前
发现一个问题,location /phpmyadmin 是好像是区分大小写的,phpmyadmin 与 phpMyAdmin 是不一样的。
我在本地环境下,phpMyAdmin 版本是 4.7.2,目录名为:phpMyAdmin , location 区块设置为 /phpmyadmin,浏览器 /phpMyAdmin 不弹出登录验证对话框。(Safari 与 Chrome 一样)
7 年 4 个月 以前
收到 :)
7 年 4 个月 以前
皓哥,我 phpMyAdmin 使用 http://主机IP地址/phpMyAdmin,想为IP地址添加 SSL 证书,实现 https 访问,想请问有没有可行的方式?阿里云免费的证书好像不支持直接IP地址申请。
(CentOS 7.3,LEMP)
7 年 4 个月 以前
嗯,你不能使用 IP,加个域名吧。
7 年 4 个月 以前