Difference between revisions of "MySQL"

From Limbas Wiki

Jump to: navigation, search
(2 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
<!--T:2-->
 
<!--T:2-->
 
Mit folgendem Kommando werden die benötigten Software-Pakete unter RedHat/Fedora/CentOS installiert:
 
Mit folgendem Kommando werden die benötigten Software-Pakete unter RedHat/Fedora/CentOS installiert:
  yum install mysql mysql-server mysql-connector-odbc
+
  yum install mysql mysql-server php-mysql php-pdo
  
 
<!--T:3-->
 
<!--T:3-->
 
Anschließend kann der MySQL-Server gestartet werden:
 
Anschließend kann der MySQL-Server gestartet werden:
 
   
 
   
  /etc/init.d/mysqld start
+
  systemctl start mysql
  
 
<!--T:4-->
 
<!--T:4-->
Für Produktivumgebungen sollte eine sichere Installation durchgeführt werden. Hierzu wird das entsprechende MySQL-Setup aufgerufen:
+
Für Produktivumgebungen sollte eine sichere Installation durchgeführt werden. Hierzu wird das entsprechende MySQL-Setup aufgerufen. In diesem kann das root passwort neu gesetzt werden:
 
  /usr/bin/mysql_secure_installation
 
  /usr/bin/mysql_secure_installation
 
<!--T:5-->
 
Zuerst muss das Root-Passwort gesetzt werden (standardmäßig leer):
 
  
 
  <!--T:6-->
 
  <!--T:6-->
In order to log into MySQL to secure it, we'll need the current
 
password for the root user.  If you've just installed MySQL, and
 
you haven't set the root password yet, the password will be blank,
 
so you should just press enter here.
 
 
 
  Enter current password for root (enter for none):
 
  Enter current password for root (enter for none):
 
  OK, successfully used password, moving on...
 
  OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MySQL
 
root user without the proper authorisation.
 
 
You already have a root password set, so you can safely answer 'n'.
 
 
   
 
   
 
  '''Change the root password? [Y/n] y'''
 
  '''Change the root password? [Y/n] y'''
 
  New password:
 
  New password:
 
  Re-enter new password:
 
  Re-enter new password:
Password updated successfully!
 
Reloading privilege tables..
 
  ... Success!
 
 
 
   
 
   
  By default, a MySQL installation has an anonymous user, allowing anyone
+
  '''Remove anonymous users? [Y/n] y'''
to log into MySQL without having to have a user account created for
 
them.  This is intended only for testing, and to make the installation
 
go a bit smoother.  You should remove them before moving into a
 
production environment.
 
 
 
<!--T:7-->
 
Anschließend sollte der anonyme Benutzer deaktiviert werden
 
 
 
<!--T:8-->
 
'''Remove anonymous users? [Y/n] y'''
 
 
   ... Success!
 
   ... Success!
 
<!--T:9-->
 
Alle weiteren Einstellungen können individuell gesetzt werden:
 
 
<!--T:10-->
 
Normally, root should only be allowed to connect from 'localhost'.  This
 
ensures that someone cannot guess at the root password from the network.
 
 
   
 
   
  '''Disallow root login remotely? [Y/n] n'''
+
  '''Disallow root login remotely? [Y/n] Y'''
 
   ... skipping.
 
   ... skipping.
 
   
 
   
  By default, MySQL comes with a database named 'test' that anyone can
+
  '''Reload privilege tables now? [Y/n] Y'''
access.  This is also intended only for testing, and should be removed
 
before moving into a production environment.
 
 
'''Remove test database and access to it? [Y/n] Y'''
 
  - Dropping test database...
 
  ... Success!
 
  - Removing privileges on test database...
 
 
   ... Success!
 
   ... Success!
 
   
 
   
Reloading the privilege tables will ensure that all changes made so far
 
will take effect immediately.
 
 
'''Reload privilege tables now? [Y/n]'''
 
  ... Success!
 
 
Cleaning up...
 
 
 
 
All done!  If you've completed all of the above steps, your MySQL
 
installation should now be secure.
 
 
Thanks for using MySQL!
 
  
==Konfiguration== <!--T:11-->
+
==Konfiguration (OPIONAL)== <!--T:11-->
in der Globalen Konigurationsdatei /etc/my.cnf müssen folgende Einstellungen unter dem Eintrag "mysqld" hinzugefügt oder geändert werden:
+
Limbas unterstützt keine Groß/Kleinschreibung für Tabellennamen. Um die SQL Statements z.B für Abfragen zu vereinfachen kann in der Globalen Konigurationsdatei /etc/my.cnf kann die Einstellungen unter dem Eintrag "mysqld" hinzugefügt oder geändert werden:
  
  <!--T:12-->
+
  [mysqld]
[mysqld]
 
 
  ...
 
  ...
  default-storage-engine=InnoDB
+
  upper_case_table_names = 1
lower_case_table_names = 1
 
  
 
===Datenbankengine InnoDB oder MYISAM=== <!--T:13-->
 
===Datenbankengine InnoDB oder MYISAM=== <!--T:13-->
Als Datenbankengine kann sowohl InnoDB oder MYISAM genutzt werden. Für Transaktionsorientierte Anwendungen sollte InnoDB verwendet werden. Im Gegensatz zu MYISAM bietet diese Transaktionen sowie Foreign-Keys. Das ist die empfohlene Einstellung. Soll auf LIMBAS hauptsächlich lesend zugegriffen und auf Datenintegrität verzichtet werden, bietet die MYISAM Engine eine Alternative. Weitere Engines wurden noch nicht mit LIMBAS getestet.
+
Als Datenbankengine kann sowohl InnoDB oder MYISAM genutzt werden. Für Transaktionsorientierte Anwendungen sollte InnoDB verwendet werden. Im Gegensatz zu MYISAM bietet diese Transaktionen sowie Foreign-Keys. Das ist die empfohlene Einstellung. Soll auf LIMBAS hauptsächlich lesend zugegriffen und auf Datenintegrität verzichtet werden, bietet die MYISAM Engine eine Alternative.
 +
 
 +
[mysqld]
 +
...
 +
default-storage-engine=InnoDB
  
 
==Datenbank anlegen== <!--T:14-->
 
==Datenbank anlegen== <!--T:14-->
Line 105: Line 52:
 
Jetzt kann die MySQL-Konsole mit dem vorher festgelegten Passwort aufgerufen werden:
 
Jetzt kann die MySQL-Konsole mit dem vorher festgelegten Passwort aufgerufen werden:
  
<!--T:16-->
+
<!--T:16-->
mysql -u root -p
+
mysql -u root -p
  
 
<!--T:17-->
 
<!--T:17-->
 
Eine Datenbank für Limbas wird in der MySQL-Konsole nun wie folgt erstellt:
 
Eine Datenbank für Limbas wird in der MySQL-Konsole nun wie folgt erstellt:
 +
mysql> CREATE DATABASE <limbasDB>;
  
<!--T:18-->
+
Eine User für Limbas wird in der MySQL-Konsole nun wie folgt erstellt:
mysql> CREATE DATABASE <limbasDB>;
+
mysql> CREATE USER '<limbasUSER>'@'localhost' IDENTIFIED BY '<limbasPASS>';
Query OK, 1 row affected (0.00 sec)
 
  
 
<!--T:19-->
 
<!--T:19-->
Line 119: Line 66:
  
 
  <!--T:20-->
 
  <!--T:20-->
mysql> GRANT ALL ON <limbasDB>.*
+
mysql> GRANT ALL ON <limbasDB>.* TO <limbasUSER>@localhost IDENTIFIED BY '<limbasPASS>';
    ->  TO <limbasuser>@localhost IDENTIFIED BY '<limbaspassword>';
 
Query OK, 0 rows affected (0.00 sec)
 
  
====ODBC-Konfiguration==== <!--T:21-->
 
Die Datenbankverbindung über ODBC ist notwendig wenn nicht PostgreSQL oder MYSQL als Datenbank genutzt werden oder die PDO Schnittstelle nicht zur Verfügung steht. Das Einrichten von ODBC ist aufwändiger und umfasst neben der Installation der notwendigen Packete auch das Einrichten von UnixODB und der Datenbank ODBC Treiber.
 
  
 
<!--T:22-->
 
<!--T:22-->
Es gibt zwei Varianten LIMBAS mit der Datenbank zu verbinden:
+
===ODBC (OPTIONAL)===
* Verbindung mit direktem ODBC-Treiberzugriff
+
Die folgenden Schritte sind nur notwendig falls die Verbindung nicht mit PDO erfolgen soll.
 +
Es gibt zwei Varianten LIMBAS mit der Datenbank zu verbinden wobei PDO der Standard ist. Für ODBC müssen zusätzliche Schritte wie die Installation von UnixODB und die Erstellung einer Datenbank Resource vorgenommen werden.
 +
* Verbindung mit PDO
 
* Verbindung mit ODBC-resource
 
* Verbindung mit ODBC-resource
  
 
<!--T:23-->
 
<!--T:23-->
Die folgenden beiden Punkte sind für beide Varianten durchzuführen:
+
Die folgenden beiden Punkte sind für die ODBC Variante durchzuführen:
  
 
<!--T:24-->
 
<!--T:24-->

Revision as of 14:45, 18 June 2021

MySQL-Installation

Mit folgendem Kommando werden die benötigten Software-Pakete unter RedHat/Fedora/CentOS installiert:

yum install mysql mysql-server php-mysql php-pdo

Anschließend kann der MySQL-Server gestartet werden:

systemctl start mysql

Für Produktivumgebungen sollte eine sichere Installation durchgeführt werden. Hierzu wird das entsprechende MySQL-Setup aufgerufen. In diesem kann das root passwort neu gesetzt werden:

/usr/bin/mysql_secure_installation
 Enter current password for root (enter for none):
OK, successfully used password, moving on...

Change the root password? [Y/n] y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] y
 ... Success!

Disallow root login remotely? [Y/n] Y
 ... skipping.

Reload privilege tables now? [Y/n] Y
 ... Success!

Konfiguration (OPIONAL)

Limbas unterstützt keine Groß/Kleinschreibung für Tabellennamen. Um die SQL Statements z.B für Abfragen zu vereinfachen kann in der Globalen Konigurationsdatei /etc/my.cnf kann die Einstellungen unter dem Eintrag "mysqld" hinzugefügt oder geändert werden:

[mysqld]
...
upper_case_table_names = 1

Datenbankengine InnoDB oder MYISAM

Als Datenbankengine kann sowohl InnoDB oder MYISAM genutzt werden. Für Transaktionsorientierte Anwendungen sollte InnoDB verwendet werden. Im Gegensatz zu MYISAM bietet diese Transaktionen sowie Foreign-Keys. Das ist die empfohlene Einstellung. Soll auf LIMBAS hauptsächlich lesend zugegriffen und auf Datenintegrität verzichtet werden, bietet die MYISAM Engine eine Alternative.

[mysqld]
...
default-storage-engine=InnoDB

Datenbank anlegen

Jetzt kann die MySQL-Konsole mit dem vorher festgelegten Passwort aufgerufen werden:

mysql -u root -p

Eine Datenbank für Limbas wird in der MySQL-Konsole nun wie folgt erstellt:

mysql> CREATE DATABASE <limbasDB>;

Eine User für Limbas wird in der MySQL-Konsole nun wie folgt erstellt:

mysql> CREATE USER '<limbasUSER>'@'localhost' IDENTIFIED BY '<limbasPASS>';

Anschließend sollte für den Zugriff auf alle Tabellen in der Limbas-Datenbank ein gesonderter Benutzer wie folgt eingerichtet werden:

mysql> GRANT ALL ON <limbasDB>.* TO <limbasUSER>@localhost IDENTIFIED BY '<limbasPASS>';


ODBC (OPTIONAL)

Die folgenden Schritte sind nur notwendig falls die Verbindung nicht mit PDO erfolgen soll. Es gibt zwei Varianten LIMBAS mit der Datenbank zu verbinden wobei PDO der Standard ist. Für ODBC müssen zusätzliche Schritte wie die Installation von UnixODB und die Erstellung einer Datenbank Resource vorgenommen werden.

  • Verbindung mit PDO
  • Verbindung mit ODBC-resource

Die folgenden beiden Punkte sind für die ODBC Variante durchzuführen:

  • Pfade der Konfigurationsdateien von unixODBC ermitteln:
$ odbcinst -j
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
USER DATA SOURCES..: /<user>/.odbc.ini
  • In der unter "DRIVERS" ermittelten Datei (hier "/etc/odbcinst.ini") die Treiber mit Dateiname und Pfad hinzufügen:
[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc5.so
Setup           = /usr/lib/libodbcmyS.so
Driver64        = /usr/lib64/libmyodbc5.so
Setup64         = /usr/lib64/libodbcmyS.so


Der folgende Punkt ist nur notwendig bei einer Verbindung mittels ODBC-resource

  • In der unter "SYSTEM DATA SOURCES" ermittelten Datei (hier "/etc/odbc.ini") den folgenden Eintrag hinzufügen:
[limbas_resource]
Description             = MySQL
Driver                  = MySQL
Database                = <limbasDB>
Username                = <limbasuser>
Password                = <limbaspassword>
Port                    = 3306
Trace                   = Off
Server                  = localhost
Charset                 = latin1

Hinweise zur Limbas-Installation

Um LIMBAS mit dem ODBC-Treiber zu installieren, ist bei MySQL zu beachten, dass in das Feld Datenbank-Schema der Name der Datenbank eingetragen eingetragen wird. InstallerResource.png