解决phpMyAdmin无法设置Cookie

1、错误内容

在宝塔的7.9版本中,提供了phpMyAdmin的面板访问功能,也就是如果面板是http://1.1.1.1:8888,那么可以通过http://1.1.1.1:8888/phpmydmin访问,并且需要提前登录面板。

这个功能增加了安全性,这样就不需要单独开一个端口用于phpMyAdmin,然而我开启了面板SSL,在登录时成功遇到错误:

phpMyAdmin failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.

这就是说,需要HTTP/HTTPS前后匹配,才可以成功登录。

2、解决方案

下列四种方案,只需要选择一种即可。

2.1、关闭面板SSL

如果不愿意折腾的话,直接关闭面板SSL即可,但是会导致安全性下降,不建议采用。

2.2、更改phpMyAdmin端口

宝塔似乎直接反向代理888端口,因此可以:

  1. 先把HTTP端口改为非888
  2. 开启HTTPS端口并改为888
  3. 关闭HTTP端口

经实测,该方案在大多数时候可以完美解决。

2.3、设置绝对路径

修改phpMyAdmin路径下的

config.inc.php

找到:

PHP
1
$cfg['PmaAbsoluteUri'] = 'https://.../...';

如果没有的话手动添加。

假如你的phpMyAdmin现在要通过https://pma.com/my_pma_login/访问,就设置为:

PHP
1
$cfg['PmaAbsoluteUri'] = 'https://pma.com/my_pma_login/';

即可完美解决问题。

2.4、设置Cookie登录

修改phpMyAdmin路径下的

config.inc.php

找到

PHP
1
$cfg['Servers'][$i]['auth_type'] = '...';

改为

PHP
1
$cfg['Servers'][$i]['auth_type'] = 'cookie';

但是似乎默认就是Cookie,也许有人乱动这个也会导致错误

2.5、设置反向代理头部

如果为自己设置的反向代理,可以尝试添加:

Nginx
1
2
proxy_set_header Cookie $http_cookie;
proxy_cookie_domain a.com b.com;

a.com是反向代理之后的域名,b.com是原来的域名。

解决phpMyAdmin无法设置Cookie

https://blog.tsinbei.com/archives/1081/

文章作者
Hsukqi Lee
发布于

2023-01-20

修改于

2023-05-18

许可协议

CC BY-NC-ND 4.0

评论

昵称
邮箱
网址
暂无