I am running a server which hosts both a MySQL instance (with several databases) and some SQLite files. I would like to use Adminer to manage all of them, provided that valid credentials are given by the users. Also, a list of databases should be populated.
In case of MySQL, valid database users can be used and the connection works out of the box. However, SQLite support must be added explicitly. Adminer gives this error:
Implement login() method to use SQLite.
Adminer
class to enable SQLite login?This answer applies to Adminer version 4.2.5. Unfortunately, it is not valid for Adminer 4.3.x.
You need to override the login
and databases
methods of the Adminer
class, making sure you do it only for the SQLite driver, not in other cases. The following code achieves a basic login system with a list of databases:
<?php
function adminer_object() {
class AdminerSoftware extends Adminer {
function login($login, $password) {
global $jush;
if ($jush == "sqlite")
return ($login === 'admin') && ($password === 'changeme');
return true;
}
function databases($flush = true) {
if (isset($_GET['sqlite']))
return ["/path/to/first.db", "/path/to/second.db"];
return get_databases($flush);
}
}
return new AdminerSoftware;
}
include "./adminer-4.2.5.php";
The code could be adapted to support multiple users. Save the file as index.php
in the same directory where adminer-4.2.5.php
is located. Make sure to tweak the username, password and paths to the databases.
Here are some important remarks:
login
method is not properly named, it is an initial check performed by Adminertrue
like the original class does