lagdo/jaxon-adminer

此包已被废弃且不再维护。作者建议使用lagdo/jaxon-dbadmin包。

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

安装: 54

依赖项: 0

建议者: 0

安全性: 0

星标: 3

关注者: 2

分支: 0

开放问题: 1

类型:application

v0.6.10 2021-08-26 19:01 UTC

README

此包已弃用。请参阅Jaxon DbAdmin包。

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

它基于Adminer,因此将提供相同的功能。例如,它将能够管理MySQL、PostgreSQL、Sqlite、MsSQL、MongoDb和Oracle数据库。

功能

  • 连接到MySQL数据库。
  • 显示MySQL数据库服务器的基本信息。
  • 显示连接数据库中的表列表。
  • 显示MySQL数据库服务器的详细信息。
  • 显示连接数据库的详细信息。
  • 连接到PostgreSQL数据库。
  • 限制对服务器信息和数据库的访问。
  • 执行请求并显示结果。
  • 将数据库导出到sql文件。
  • 从一个或多个sql文件导入数据库。
  • 连接到其他数据库类型。
  • 添加其他UI框架,如Bootstrap,并允许用户选择他喜欢的框架(部分实现,用户可以在Bootstrap 3和4之间选择)。
  • 改进Adminer代码库(正在进行中,请参阅https://github.com/lagdo/jaxon-adminer-drivers仓库)。
  • 添加测试

如何使用

在Jaxon网站上这篇博客文章解释了如何在基于Laravel框架的Voyager管理面板上安装Jaxon Adminer:英文版In english,法文版in french

文档

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

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

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

    'app' => [
        // Other config options
        // ...
        'packages' => [
            Lagdo\Adminer\Package::class => [
                'servers' => [
                    'first_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                    'second_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                ],
            ],
        ],
    ],

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

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

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

  • 如果仪表板在已显示的页面上通过Ajax请求加载,请在页面加载后执行调用jaxon()->package(\Lagdo\Adminer\Package::class)->getReadyScript()返回的JavaScript代码。

额外的配置选项

还有一些配置选项可以用来自定义Jaxon Adminer的操作。

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

    'app' => [
        'packages' => [
            Lagdo\Adminer\Package::class => [
                'servers' => [
                    'first_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                    'second_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                ],
                'default' => 'second_server',
            ],
        ],
    ],

access选项限制了对任何服务器上的数据库或定义的数据库集的访问。如果包级别上的access.server设置为false,则将禁止访问所有服务器信息。此access.server选项也可以在服务器级别设置,在这种情况下,它仅适用于该特定服务器。

    'app' => [
        'packages' => [
            Lagdo\Adminer\Package::class => [
                'servers' => [
                    'first_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                    'second_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                        'access' => [
                            'server' => true,
                        ],
                    ],
                ],
                'default' => 'second_server',
                'access' => [
                    'server' => false,
                ],
            ],
        ],
    ],

在上面的配置中,用户只能访问second_server上的服务器信息。

access.databasesaccess.schemas选项定义了用户可以访问的数据库和模式集。此选项只能在服务器级别定义,并将适用于该特定服务器。

    'app' => [
        'packages' => [
            Lagdo\Adminer\Package::class => [
                'servers' => [
                    'first_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                    'second_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                        'access' => [
                            'server' => false,
                            'databases' => ['db1', 'db2', 'db3'],
                            'schemas' => ['public'],
                        ],
                    ],
                ],
                'default' => 'second_server',
            ],
        ],
    ],

在上面的配置中,用户只能访问second_server上的三个数据库,而他将有对first_server的完全访问权限。

数据导入

可以上传并执行服务器上的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\Adminer\Package::class => [
                'servers' => [
                    'first_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                    'second_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                        'access' => [
                            'server' => true,
                        ],
                    ],
                ],
                'default' => 'second_server',
                'access' => [
                    'server' => false,
                ],
                'export' => [
                    'dir' => '/path/to/the/export/dir',
                    'url' => 'http://www.domain.com/exports',
                ],
            ],
        ],
    ],

需要设置Web服务器来从url服务dir中的文件。

更改UI框架

从版本0.6开始,此包旨在支持多个UI框架和多个模板。

当前模板使用template选项设置,默认值为bootstrap3

    'app' => [
        'packages' => [
            Lagdo\Adminer\Package::class => [
                'template' => 'bootstrap3',
                'servers' => [
                    'first_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                    'second_server' => [
                        'name' => '',     // The name to be displayed in the dashboard UI
                        'driver' => '',   // mysql, pgsql, sqlite, mongo, oracle, mssql or elastic.
                        'host' => '',     // The database host name or address.
                        'port' => 0,      // The database port
                        'username' => '', // The database user credentials
                        'password' => '', // The database user credentials
                    ],
                ],
            ],
        ],
    ],

以下UI框架得到支持

未来版本将添加更多UI框架。

贡献

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

许可

该项目采用Apache许可证。