Linux Datenbank Konfiguration¶

ownCloud benötigt eine Datenbank, in dem Verwaltungsdaten gespeichert werden. Die folgenden Datenbanken werden zur Zeit unterstützt:

Die MySQL oder MariaDB Datenbanken sind die empfohlenen Datenbank-Engines.

Voraussetzungen¶

Die Entscheidung ob Sie MySQL / MariaDB, PostgreSQL oder Oracle als Datenbank verwenden wollen, müssen Sie vor der Installation der Server-Software festlegen.

Hinweis

Die Schritte für die Konfiguration einer Dritten Datenbank geht über den Rahmen dieses Dokuments hinaus. Bitte beachten Sie die Dokumentation für Ihre ausgewählte Datenbank für die entsprechend benötigten Anweisungen.

Parameter¶

Für die Einstellung der Datenbank die Sie in ownCloud verwenden möchten, verwenden Sie die Anweisungen aus dem Installationsassistenen. Sie sollten nicht die entsprechenden Werte in der config/config.php erscheinen, ist es in besonderen Fällen notwendig (z. Bsp wenn Sie Ihre ownCloud Instanz mit einer Datenbank von einer vorherigen Installation von ownCloud verbinden möchten), einige Modifikation durchzuführen.

Konfigurieren einer MySQL oder MariaDB Datenbank¶

Wenn Sie sich entscheiden, eine MySQL oder MariaDB Datenbank zu verwenden, stellen Sie Folgendes sicher:

  • Das Sie die MySQL-Erweiterung in PHP installiert und aktiviert haben.
  • Das der mysql.default_socket Wert auf den richtigen Socket verweist(wenn die Datenbank auf demselben Server wie ownCloud läuft).

Hinweis

Die MariaDB ist abwärtskompatibel zu MySQL. Alle Anweisungen gelten daher für für beide datenbanken. Sie brauchen für MySQL nichts weiter austauschen.

Die PHP Konfiguration unter /etc/php5/conf.d/mysql.ini könnte wie folgt aussehen:

# configuration for PHP MySQL module
extension=pdo_mysql.so
extension=mysql.so

[mysql]
mysql.allow_local_infile=On
mysql.allow_persistent=On
mysql.cache_size=2000
mysql.max_persistent=-1
mysql.max_links=-1
mysql.default_port=
mysql.default_socket=/var/lib/mysql/mysql.sock  # Debian squeeze: /var/run/mysqld/mysqld.sock
mysql.default_host=
mysql.default_user=
mysql.default_password=
mysql.connect_timeout=60
mysql.trace_mode=Off

Um einen Datenbankbenutzer und die Datenbank selbst zu erstellen, verwenden Sie den MySQL Befehlszeilenmodus. Die Datenbanktabellen werden von ownCloud passend erstellt werden, wenn Sie sich zum ersten Mal einloggen.

So starten Sie Verwendung des MySQL-Befehlszeilenmodus:

mysql -uroot -p

Dann wird eine Eingabeaufforderung wie mysql> oder MariaDB [root]> angezeigt. Nun geben Sie die folgenden Zeilen ein und bestätigen Sie diese mit der Enter-Taste:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS owncloud;
GRANT ALL PRIVILEGES ON owncloud.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Sie können die Eingabeaufforderung durch Eingabe von:

quit

beenden.

Ein ownCloud Instanz mit MySQL verwendet den Hostnamen, auf dem die Datenbank ausgeführt wird, und einen gültigen Benutzernamen und Kennwort, das für den Zugriff zu Einsatz kommt und die Namen der Datenbank. Die config/config.php wird durch den erstellt Installationsassistenten erstellt und wird daher Einträge enthalten die als Beispiel so wie diese aussehen können:

<?php

  "dbtype"        => "mysql",
  "dbname"        => "owncloud",
  "dbuser"        => "username",
  "dbpassword"    => "password",
  "dbhost"        => "localhost",
  "dbtableprefix" => "oc_",

PostgreSQL Datenbank¶

Wenn Sie sich für eine PostgreSQL-Datenbank entschieden haben, stellen Sie sicher, dass Sie die PostgreSQL-Erweiterung in PHP installiert und aktiviert haben. Die PHP-Konfiguration der /etc/php5/conf.d/pgsql.ini könnte zu Beispiel so aussehen:

# configuration for PHP PostgreSQL module
extension=pdo_pgsql.so
extension=pgsql.so
[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

Die Standardkonfiguration für PostgreSQL (zumindest in Ubuntu 14.04) verwendet die Peer-Authentifizierungsmethode. Überprüfen Sie die /etc/postgresql/9.3/main/pg_hba.conf um herauszufinden, welche Authentifizierungsmethode in Ihrer Konfiguration verwendet wird. So starten Sie die Verwendung des Postgres Befehlszeilenmodus:

sudo -u postgres psql -d template1

Dann wird die Eingabeaufforderung template1=# angezeigt. Nun geben Sie die folgenden Zeilen ein und bestätigen Sie diese mit der Enter-Taste:

CREATE USER username CREATEDB;
CREATE DATABASE owncloud OWNER username;

Sie können die Eingabeaufforderung durch Eingabe von:

\q

beenden.

Eine ownCloud Instanz mit PostgreSQL verwendet als Socket den Hostnamen wo die die Datenbank ausgeführt wird, das System wird dann den Benutzernamen für den PHP Prozess verwenden, sowie ein leeres Kennwort für den Zugriff auf die Datenbank und den Name der Datenbank einsetzen. Die config/config.php wird mit dem Installationsassistenten erstellt wird daher die folgenden Einträge enthalten:

<?php

  "dbtype"        => "pgsql",
  "dbname"        => "owncloud",
  "dbuser"        => "username",
  "dbpassword"    => "",
  "dbhost"        => "/var/run/postgresql",
  "dbtableprefix" => "oc_",

Hinweis

Der Host verwendet tatsächlich den Socket um die Verbindung zur Datenbank herzustellen. Mit localhost wird hier nicht verwendet, wenn PostgreSQL so konfiguriert ist, das die Peer-Authentifizierung verwendet wird. Beachten Sie auch, dass Sie kein Passwort angegeben, weil diese Authentifizierungsmethode kein Kennwort verwendet.

Wenn Sie eine andere Authentifizierungsmethode (nicht Peer) zu verwenden, müssen Sie die folgenden Schritte durchführen, um das Datenbank-Setup abschließen zu können: Um einen Datenbankbenutzer und die Datenbank selbst zu erstellen müssen Sie PostgreSQL Kommandozeilen-Schnittstelle verwenden. Die Datenbanktabellen erstellt ownCloud beim ersten Einloggen automatisch.

So starten Sie die Verwendung des Postgres Befehlszeilenmodus:

psql -hlocalhost -Upostgres

Dann wird die Eingabeaufforderung postgres=# angezeigt. Nun geben Sie die folgenden Zeilen ein und bestätigen Sie diese mit der Enter-Taste:

CREATE USER username WITH PASSWORD 'password';
CREATE DATABASE owncloud TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE owncloud OWNER TO username;
GRANT ALL PRIVILEGES ON DATABASE owncloud TO username;

Sie können die Eingabeaufforderung durch Eingabe von:

\q

beenden.

Ein ownCloud Instanz mit PostgreSQL verwendet als Hostnamen denjenigen wo die Datenbank ausgeführt wird, einen gültigen Benutzernamen und Kennwort für den Zugriff die Datenbank und den Name der Datenbank. Die config/config.php wird mit dem Installationsassistenten erstellt wird daher die folgenden Einträge enthalten:

<?php

  "dbtype"        => "pgsql",
  "dbname"        => "owncloud",
  "dbuser"        => "username",
  "dbpassword"    => "password",
  "dbhost"        => "localhost",
  "dbtableprefix" => "oc_",

Oracle Datenbank¶

Wenn Sie eine Oracle-Datenbank bereitstellen möchten, dann stellen Sie sicher, dass Sie diese installiert und aktiviert haben und Sie die Oracle extension in PHP verwenden. Die PHP Konfiguration unter der /etc/php5/conf.d/oci8.ini könnte wie folgt aussehen:

# configuration for PHP Oracle extension
extension=oci8.so

Stellen Sie sicher, dass die Oracle-Umgebung für den Prozess die Oracle-Erweiterung verwendet. Bei einer lokalen Oracle XE Installation kann dies durch den Export der folgenden Umgebungsvariablen durchgeführt werden (z. Bsp. unter /etc/apache2/envvars für Apache)

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

Die Installation und Konfiguration der PHP Unterstützung für Oracle würde den Rahmen dieses Handbuchs sprengen, daher greifen Sie bei Fragen und Problemen auf die offizielle Oracle-Dokumentation, die Sie unter The Underground PHP and Oracle Manual zurück.

Das Erstellen eines Datenbankbenutzer für ownCloud kann mit der sqlplus Befehlszeilenschnittstelle durchgeführt werden oder mit dem Oracle Application Express Web-Interface. Die Datenbanktabellen werden von ownCloud erstellt, wenn Sie sich zum ersten Mal anmelden.

So starten Sie den Oracle-Kommandozeilen-Modus, wenn Sie ein DBA-Konto verwenden:

sqlplus system AS SYSDBA

Nach Eingabe des Passworts erscheint die Eingabeaufforderung SQL>. Nun geben Sie die folgenden Zeilen ein und bestätigen Sie diese mit der Enter-Taste:

CREATE USER owncloud IDENTIFIED BY password;
ALTER USER owncloud DEFAULT TABLESPACE users
                    TEMPORARY TABLESPACE temp
                    QUOTA unlimited ON users;
GRANT create session
    , create table
    , create procedure
    , create sequence
    , create trigger
    , create view
    , create synonym
    , alter session
   TO owncloud;

Hinweis

In Oracle erfolgt das Erstellen eines Benutzers ebenso wie in anderen RDBMs Datenbanken, so dass kein CREATE DATABASE Befehl notwendig ist.

Sie können die Eingabeaufforderung durch Eingabe von:

exit

beenden.

Eine ownCloud Instanz mit Oracle verwendet den Hostnamen der Datenbank, sowie einen gültigen Benutzernamen und das Kennwort für den Zugriff auf die Datenbank und den dazugehörigen Namen der Datenbank. Die config/config.php wird mit dem Installationsassistenten erstellt wird daher die folgenden Einträge enthalten:

<?php

  "dbtype"        => "oci",
  "dbname"        => "XE",
  "dbuser"        => "owncloud",
  "dbpassword"    => "password",
  "dbhost"        => "localhost",

Hinweis

Dieses Beispiel nimmt die Installation einer Oracle Express Edition auf dem localhost an. Der dbname ist der Name der Oracle-Instanz. Für die Oracle Express Edition XE gilt das ebenso.

Fehlerbehebung¶

Wie kann ich herausfinden , ob mein MySQL / PostgreSQL-Server erreichbar ist ?¶

Um die Netzwerkverfügbarkeit des Servers zu überprüfen, verwenden Sie den Befehl ping auf den Server-Hostnamen (db.server.com in diesem Beispiel):

ping db.server.dom
PING db.server.dom (ip-address) 56(84) bytes of data.
64 bytes from your-server.local.lan (192.168.1.10): icmp_req=1 ttl=64 time=3.64 ms
64 bytes from your-server.local.lan (192.168.1.10): icmp_req=2 ttl=64 time=0.055 ms
64 bytes from your-server.local.lan (192.168.1.10): icmp_req=3 ttl=64 time=0.062 ms

Für eine genauere Prüfung, ob der Zugriff auf die Datenbank-Server-Software selbst ordnungsgemäß funktioniert, sehen Sie sich die nächste Frage an.

Wie kann ich herausfinden, ob ein Benutzer erstellt wurde und diese auf die Datenbank zugreifen kann?¶

Der einfachste Weg, um zu testen, ob auf eine Datenbank zugegriffen werden kann, ist, indem Sie die Befehlszeilenschnittstelle verwenden:

MySQL:

Angenommen, der Datenbankserver läuft auf demselben Sytem wo sich auch Ihre Installation befindet, dann verwenden Sie den folgenden Befehl:

mysql -uUSERNAME -p

Um eine MySQL-Installation auf einem anderen Computer zu erreichen, fügen Sie die Option -h mit dem betreffenden Hostname hinzu:

mysql -uUSERNAME -p -h HOSTNAME
mysql> SHOW VARIABLES LIKE "version";
+---------------+--------+
| Variable_name | Value  |
+---------------+--------+
| version       | 5.1.67 |
+---------------+--------+
1 row in set (0.00 sec)
mysql> quit

PostgreSQL:

Angenommen, der Datenbankserver läuft auf demselben Sytem wo sich auch Ihre Installation befindet, dann verwenden Sie den folgenden Befehl:

psql -Uusername -downcloud

Um eine MySQL-Installation auf einem anderen Computer zu erreichen, fügen Sie die Option -h mit dem betreffenden Hostname hinzu:

psql -Uusername -downcloud -h HOSTNAME
postgres=# SELECT version();
PostgreSQL 8.4.12 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.3 20080704 (prerelease), 32-bit
(1 row)
postgres=# \q

Oracle:

Auf dem Rechner, auf dem die Oracle-Datenbank installiert ist, geben Sie Folgendes ein:

sqlplus username
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE  11.2.0.2.0      Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production

SQL> exit

Nützliche SQL-Befehle¶

Zeige Datenbankbenutzer an:

MySQL     : SELECT User,Host FROM mysql.user;
PostgreSQL: SELECT * FROM pg_user;
Oracle    : SELECT * FROM all_users;

Verfügbarkeit der Datenbanken:

MySQL     : SHOW DATABASES;
PostgreSQL: \l
Oracle    : SELECT name FROM v$database; (requires DBA privileges)

Zeige ownCloud Tabellen in Datenbank an:

MySQL     : USE owncloud; SHOW TABLES;
PostgreSQL: \c owncloud; \d
Oracle    : SELECT table_name FROM user_tables;

Beenden der Datenbank:

MySQL     : quit
PostgreSQL: \q
Oracle    : quit