lagdo/jaxon-dbadmin

基于Jaxon和Adminer的数据库管理仪表板

安装: 107

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:应用程序


README

Scrutinizer Code Quality StyleCI Build Status Coverage Status

Latest Stable Version Total Downloads License

基于Jaxon和Adminer的数据库管理仪表板

本包基于Adminer

它将数据库管理仪表板插入现有的PHP应用程序中。感谢Jaxon库,它可以在应用程序的一页中安装和运行。所有操作都通过Ajax请求执行。

安装方法

在Jaxon网站上的一篇博客文章解释了如何在基于Laravel框架的Voyager管理员面板上安装Jaxon DbAdmin英文法文

Jaxon DbAdmin和Voyager

https://github.com/lagdo/dbadmin-voyager存储库提供了一个现成的包,使用Voyager管理员仪表板和包含的Jaxon DbAdmin

还安装了PostgreSQLMySQLSQLite的驱动程序包,因此用户只需在配置文件中添加其数据库。

文档

安装Jaxon库,使其从配置文件启动并处理Ajax请求。这里是文档

使用Composer安装此包。如果您的框架存在Jaxon插件,您也可以安装它。它将自动化前面的步骤。

数据库驱动程序

安装您需要管理的数据库服务器的驱动程序包。以下驱动程序可用

在Jaxon配置文件的app部分声明包和数据库服务器。

查看特定数据库服务器的选项,请参阅相应的数据库驱动程序包。

    'app' => [
        // Other config options
        // ...
        'packages' => [
            Lagdo\DbAdmin\Package::class => [
                'servers' => [
                    // The database servers
                    'pgsql_server' => [ // A unique identifier for this server
                        'driver' => 'pgsql',
                        'name' => '',     // The name to be displayed in the dashboard UI.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port. Optional.
                        'username' => '', // The database user credentials.
                        'password' => '', // The database user credentials.
                    ],
                    'mysql_server' => [ // A unique identifier for this server
                        'driver' => 'mysql',
                        'name' => '',     // The name to be displayed in the dashboard UI.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port. Optional.
                        'username' => '', // The database user credentials.
                        'password' => '', // The database user credentials.
                    ],
                ],
            ],
        ],
    ],

使用对Jaxon\jaxon()->getCss()Jaxon\jaxon()->getScript(true)的调用,将CSS和javascript代码插入到您应用程序的HTML页面中。

在显示仪表板的页面中,插入由调用Jaxon\jaxon()->package(\Lagdo\DbAdmin\Package::class)->getHtml()返回的HTML代码。然后有两种可能的情况。

  • 如果仪表板显示在专用页面上,则在加载页面时,在您的PHP代码中调用Jaxon\jaxon()->package(\Lagdo\DbAdmin\Package::class)->ready()

  • 如果仪表板在一个已显示的页面中使用Ajax请求加载,则在页面加载后,执行返回的javascript代码 Jaxon\jaxon()->package(\Lagdo\DbAdmin\Package::class)->getReadyScript()

UI构建器

此包使用HTML UI构建器来为各种前端框架构建UI组件。还必须安装正在使用的UI框架的包。以下是一些可用的构建器:

在上面的示例中,UI将使用Bootstrap3组件构建。

    'app' => [
        'packages' => [
            Lagdo\DbAdmin\Package::class => [
                'template' => 'bootstrap3',
            ],
        ],
    ],

附加配置选项

还有一些其他配置选项可以用于自定义 Jaxon DbAdmin 的操作。

default 选项设置 Jaxon DbAdmin 启动时必须连接到的数据库服务器。

    'app' => [
        'packages' => [
            Lagdo\DbAdmin\Package::class => [
                'servers' => [
                    // The database servers
                ],
                'default' => 'server_id',
            ],
        ],
    ],

访问限制

access 部分提供了一些选项来限制对任何服务器上数据库的访问。

如果包级别上设置 access.server 选项为 false,则将禁止所有服务器的信息访问,并且用户只能访问数据库内容。access.server 选项也可以在服务器级别设置,在这种情况下,它仅适用于该特定服务器。

    'app' => [
        'packages' => [
            Lagdo\DbAdmin\Package::class => [
                'servers' => [
                    // The database servers
                    'server_id' => [
                        // Database options
                        'access' => [
                            'server' => true,
                        ],
                    ],
                ],
                'default' => 'server_id',
                'access' => [
                    'server' => false,
                ],
            ],
        ],
    ],

在此配置中,用户将只能访问ID为 server_id 的服务器上的信息。

access.databasesaccess.schemas 选项定义了用户可以访问的数据库和模式集合。这些选项只能在服务器级别定义,并将应用于该特定服务器。如果服务器提供了该功能,则 access.schemas 选项将仅适用于服务器。

    'app' => [
        'packages' => [
            Lagdo\DbAdmin\Package::class => [
                'servers' => [
                    // The database servers
                    'server_id' => [
                        // Database options
                        'access' => [
                            'server' => false,
                            'databases' => ['db1', 'db2', 'db3'],
                            'schemas' => ['public'],
                        ],
                    ],
                ],
                'default' => 'server_id',
            ],
        ],
    ],

在此配置中,用户将只能访问ID为 server_id 的服务器上的三个数据库。

自定义包配置

应用程序管理员可能需要根据连接的用户帐户或组自定义访问参数。

在这种情况下,可以使用 provider 选项来定义一个返回作为数组的访问选项的可调用函数,然后将其用于配置包。

定义的选项传递给可调用函数,因此可以使用它作为构建自定义配置的基础。

$dbAdminOptionsGetter = function($config) {
    $config['servers']['server_mysql'] = [
        'driver' => 'mysql',
        'name' => '',     // The name to be displayed in the dashboard UI.
        'host' => '',     // The database host name or address.
        'port' => 0,      // The database port. Optional.
        'username' => '', // The database user credentials.
        'password' => '', // The database user credentials.
    ];
    $config['servers']['server_pgsql'] = [
        'driver' => 'pgsql',
        'name' => '',     // The name to be displayed in the dashboard UI.
        'host' => '',     // The database host name or address.
        'port' => 0,      // The database port. Optional.
        'username' => '', // The database user credentials.
        'password' => '', // The database user credentials.
    ];
    return $config;
};
    'app' => [
        // Other config options
        // ...
        'packages' => [
            Lagdo\DbAdmin\Package::class => [
                // A callable that return the access options.
                'provider' => $dbAdminOptionsGetter,
                'template' => 'bootstrap3',
                'servers' => [],
                'default' => 'server_mysql',
                'access' => [
                    'server' => false,
                ],
            ],
        ],
    ],

调试控制台输出

从版本 0.9.0 开始,如果将 debug.queries 选项设置为 true,则执行的可执行SQL查询也可以打印到浏览器调试控制台。

    'app' => [
        'packages' => [
            Lagdo\DbAdmin\Package::class => [
                'debug' => [
                    'queries' => true,
                ],
                'servers' => [
                    // The database servers
                ],
            ],
        ],
    ],

数据导入

可以将SQL文件上传到服务器并执行。此功能使用Jaxon ajax upload功能实现,然后需要在 Jaxon 配置文件的 lib 部分进行配置。

    'lib' => [
        'upload' => [
            'files' => [
                'sql_files' => [
                    'dir' => '/path/to/the/upload/dir',
                ],
            ],
        ],
    ],

Jaxon ajax upload 文档所述,sql_files 是文件上传字段的 name 属性,而当然 /path/to/the/upload/dir 需要是可写的。还可以定义其他参数来限制上传文件的大小或限制它们的扩展名或MIME类型。

数据导出

数据库也可以导出到各种类型的文件:SQL、CSV等。必须在配置中定义一个保存导出文件的目录,以及一个可以下载它们的URL。

    'app' => [
        'packages' => [
            Lagdo\DbAdmin\Package::class => [
                'servers' => [
                    // The database servers
                ],
                'export' => [
                    'dir' => '/path/to/the/export/dir',
                    'url' => 'http://www.domain.com/exports',
                ],
            ],
        ],
    ],

需要设置Web服务器,以便从URL url 中的 dir 目录提供文件。

贡献

  • 问题跟踪器:github.com/lagdo/jaxon-dbadmin/issues
  • 源代码:github.com/lagdo/jaxon-dbadmin

许可证

该项目受Apache许可证许可。