0

0

phpMyAdmin多服务器管理配置指南

花韻仙語

花韻仙語

发布时间:2025-08-26 18:58:19

|

997人浏览过

|

来源于php中文网

原创

phpMyAdmin多服务器管理配置指南

本教程旨在解决phpMyAdmin无法正确显示和管理多个数据库服务器的问题。通过分析常见的配置误区,我们提供了一个基于config.manyhosts.inc.php示例的标准化解决方案,详细讲解了如何利用循环结构在config.inc.php文件中正确配置多个MySQL/MariaDB服务器,确保所有连接均能在登录界面下拉列表中显示,从而实现高效的多服务器管理。

phpMyAdmin多服务器配置问题解析

在使用phpmyadmin管理多个数据库服务器时,开发者常遇到一个困扰:即使在config.inc.php文件中添加了多个服务器配置,phpmyadmin登录界面也可能只显示一个服务器,或者出现空白页面的异常。这通常是由于对phpmyadmin配置数组$cfg['servers']的索引处理不当,以及对不同服务器配置块的组织方式理解有误导致的。

例如,直接在配置文件中通过手动递增 $i 变量来定义服务器,或者混合使用动态(如通过外部变量$dbname、$dbserver等)和静态配置,往往会导致索引冲突或配置被覆盖。phpMyAdmin要求每个服务器配置都必须拥有一个唯一的、从1开始递增的数字索引。如果索引处理不当,后续的配置可能会覆盖之前的配置,或者导致phpMyAdmin无法正确解析所有服务器信息,进而无法在登录界面展示服务器选择下拉列表。

正确的phpMyAdmin多服务器配置方法

为了解决上述问题,phpMyAdmin官方推荐使用一种结构化的方式来配置多个服务器,即通过一个循环来动态生成每个服务器的配置块。这种方法确保了每个服务器都拥有独立的配置,并且索引处理得当。这种模式在phpMyAdmin的安装目录下的examples/config.manyhosts.inc.php示例文件中可以找到。

核心思想是创建一个包含所有服务器主机地址的数组,然后遍历这个数组,为每个主机地址生成一个独立的服务器配置。

配置示例与详解

以下是根据官方推荐并结合实际需求优化的多服务器配置示例。请将此代码段添加到您的phpMyAdmin配置文件(通常是/etc/phpmyadmin/config.inc.php或/usr/share/phpmyadmin/config.inc.php)中。

Shopxp购物系统Html版
Shopxp购物系统Html版

一个经过完善设计的经典网上购物系统,适用于各种服务器环境的高效网上购物系统解决方案,shopxp购物系统Html版是我们首次推出的免费购物系统源码,完整可用。我们的系统是免费的不需要购买,该系统经过全面测试完整可用,如果碰到问题,先检查一下本地的配置或到官方网站提交问题求助。 网站管理地址:http://你的网址/admin/login.asp 用户名:admin 密 码:admin 提示:如果您

下载

立即学习PHP免费学习笔记(深入)”;

<?php

// 初始化服务器索引。phpMyAdmin的服务器数组从1开始。
$i = 0;

// 定义所有需要管理的数据库主机列表。
// 可以包含主机名、IP地址,如果端口不是默认的3306,请在主机名后加上冒号和端口号。
$hosts = [
    'localhost',          // 本地MySQL服务器
    '172.18.0.1:3307'     // Docker容器或其他远程MySQL服务器,指定IP和端口
];

// 遍历主机列表,为每个主机生成独立的服务器配置
foreach ($hosts as $host) {
    $i++; // 每次循环递增服务器索引

    // 基本连接参数
    $cfg['Servers'][$i]['host'] = $host;
    $cfg['Servers'][$i]['port'] = ''; // 如果主机名已包含端口,此处留空
    $cfg['Servers'][$i]['socket'] = ''; // 如果使用TCP连接,此处留空
    $cfg['Servers'][$i]['connect_type'] = 'tcp'; // 连接类型:tcp 或 socket
    $cfg['Servers'][$i]['extension'] = 'mysqli'; // 推荐使用mysqli扩展

    // 认证方式
    // 'cookie':通过登录表单输入用户名密码
    // 'config':在配置文件中硬编码用户名密码(安全性较低,不推荐用于生产环境)
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    $cfg['Servers'][$i]['user'] = '';     // 如果auth_type是'config',在此处填写用户名
    $cfg['Servers'][$i]['password'] = ''; // 如果auth_type是'config',在此处填写密码

    // 服务器在phpMyAdmin登录界面下拉列表中的显示名称
    // 可以根据实际情况自定义,例如 '本地开发环境' 或 'Docker数据库'
    if ($host == 'localhost') {
        $cfg['Servers'][$i]['verbose'] = '本地MySQL';
    } elseif ($host == '172.18.0.1:3307') {
        $cfg['Servers'][$i]['verbose'] = 'Docker实例数据库 (172.18.0.1:3307)';
    } else {
        $cfg['Servers'][$i]['verbose'] = $host; // 默认显示主机名
    }

    // phpMyAdmin高级功能配置(可选,推荐配置以获得完整功能)
    // 这些是phpMyAdmin内部用于存储书签、关系、历史等功能的数据库和表。
    // 通常需要创建一个名为 'phpmyadmin' 的数据库,并导入phpMyAdmin提供的SQL脚本。
    $cfg['Servers'][$i]['controluser'] = 'pma'; // phpMyAdmin控制用户
    $cfg['Servers'][$i]['controlpass'] = 'pmapass'; // phpMyAdmin控制用户密码
    $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; // phpMyAdmin控制数据库
    $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma__relation';
    $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
    $cfg['Servers'][$i]['history'] = 'pma__history';
    $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
    $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
    $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
    $cfg['Servers'][$i]['recent'] = 'pma__recent';
    $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
    $cfg['Servers'][$i]['users'] = 'pma__users';
    $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
    $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
    $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
    $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
    $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
    $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

    // 其他可选设置
    $cfg['Servers'][$i]['compress'] = FALSE; // 是否启用压缩连接
    $cfg['Servers'][$i]['only_db'] = ''; // 如果只想显示特定数据库,在此处填写数据库名
    // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; // 允许无密码登录(不推荐)
}

?>

配置参数详解:

  • $i = 0;: 初始化服务器索引计数器。phpMyAdmin的$cfg['Servers']数组是1-indexed,所以我们在循环开始时先递增 $i。
  • $hosts: 这是一个包含所有数据库服务器地址的数组。每个元素可以是主机名(如localhost)或IP地址:端口(如172.18.0.1:3307)。
  • $cfg['Servers'][$i]['host']: 数据库服务器的主机地址。
  • $cfg['Servers'][$i]['port']: 数据库服务器的端口。如果主机地址中已包含端口,此处可以留空。
  • $cfg['Servers'][$i]['connect_type']: 连接类型,通常为tcp。
  • $cfg['Servers'][$i]['extension']: 使用的PHP数据库扩展,推荐mysqli。
  • $cfg['Servers'][$i]['auth_type']: 认证方式。
    • cookie:最常用且推荐的方式,用户在phpMyAdmin登录界面输入用户名和密码。
    • config:用户名和密码硬编码在配置文件中。方便但不安全,不建议在生产环境使用。
  • $cfg['Servers'][$i]['user'] / $cfg['Servers'][$i]['password']: 当auth_type为config时,此处填写数据库用户名和密码。
  • $cfg['Servers'][$i]['verbose']: 服务器在phpMyAdmin登录界面下拉列表中的显示名称,建议设置为易于识别的名称。
  • $cfg['Servers'][$i]['controluser'] / $cfg['Servers'][$i]['controlpass'] / $cfg['Servers'][$i]['pmadb']: 这些是phpMyAdmin高级功能所需的配置。为了使用书签、关系图等功能,您需要创建一个专门的数据库(通常命名为phpmyadmin)和一个拥有足够权限的控制用户(例如pma),并导入phpMyAdmin提供的create_tables.sql脚本。

注意事项

  1. 配置文件路径:请确保修改的是phpMyAdmin正在使用的config.inc.php文件。常见的路径包括/etc/phpmyadmin/config.inc.php (Debian/Ubuntu) 或phpMyAdmin安装目录下的config.inc.php。
  2. 权限问题:确保Web服务器(如Apache或Nginx)运行用户对config.inc.php文件有读取权限。
  3. 高级功能配置:如果需要使用phpMyAdmin的高级功能(如书签、关系图等),务必按照上述示例配置controluser、controlpass和pmadb,并确保pmadb数据库已创建且相关表已导入。
  4. 安全考虑:避免在生产环境中使用auth_type = 'config',因为它将数据库凭据硬编码在配置文件中。始终优先使用auth_type = 'cookie'。
  5. Valet等本地开发环境:像Valet这样的本地开发工具可能会改变phpMyAdmin的访问URL(例如从localhost/phpmyadmin到phpmyadmin.test),但这不会影响config.inc.php中多服务器配置的逻辑。只要配置文件正确,phpMyAdmin就能通过其新的访问URL正常工作。

总结

通过采用结构化的循环配置方式,您可以轻松地在phpMyAdmin中管理多个数据库服务器。这种方法不仅解决了服务器无法显示的问题,还提高了配置的可维护性和清晰度。遵循本文提供的示例和注意事项,您将能够高效地利用phpMyAdmin的强大功能来管理您的所有MySQL/MariaDB数据库实例。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1133

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

381

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2109

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

380

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1642

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

585

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

439

2024.04.29

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

24

2026.03.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 846人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号