Adminer - SynoCommunity/spksrc GitHub Wiki
Install dependencies
Adminer requires Apache 2.2 to run properly, and any version of PHP 5 or PHP 7. You should select PHP version according to requirements from your other running PHP applications.
You need to enable the required PHP Extensions in the default profile according the database products you want to access (mysql, sqlite, pgsql).
PostgreSQL
Synology uses UNIX sockets for PostgreSQL (TYPE=local
). Here is the default pg_hba.conf
from DSM 6.0.2-8451u9
:
root@DiskStation:~# cat /etc/postgresql/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
local all postgres peer map=pg_root
local all all peer
There is no need to modify the pg_hba.conf
file to access PostgreSQL databases. In addition, Unix sockets are faster than tcp/ip sockets and more efficient on small NASes.
PostgreSQL uses the client user name (defined in /etc/passwd
) to authenticate the user (METHOD=peer
).
More information about pg_hba.conf
file can be found here.
The postgres
user account has all privileges on PostgreSQL. Use the following to connect to the PostgreSQL server :
login as: admin
admin@DiskStation’s password: ************
admin@DiskStation:~$ sudo -i
Password: ************
root@DiskStation:~# su - postgres
postgres@DiskStation:~$ psql
psql (9.3.6)
Type “help” for help.
postgres=# \du
List of roles
Role name | Attributes | Member of
----------------------------+------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication | {}
postgres=# \q
postgres@DS411:~$ exit
logout
root@DS411:~#
PostgreSQL and Web Station
As PHP scripts are executed with the user http
in Web Station, proper privileges has to be set for this user :
postgres=# CREATE DATABASE "my_db";
CREATE DATABASE
postgres=# CREATE TABLE "my_table" (id SERIAL PRIMARY KEY,my_field VARCHAR(64) NOT NULL DEFAULT '');
CREATE TABLE
postgres=# GRANT CONNECT ON DATABASE "my_db" TO http;
GRANT
postgres=# \connect "my_db"
You are now connected to database "my_db" as user "postgres".
postgres=# GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE "my_table" TO http;
GRANT
Use the following PHP code to connect to your database :
try{
$pdo = new PDO('pgsql:dbname=my_db');
// Do your stuff
}catch (\Exception $e){
var_dump($e);
}