Différences entre versions de « Sql install »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
Ligne 147 : Ligne 147 :
 
# iptables -I INPUT 2 -p tcp --dport 3306 -j ACCEPT
 
# iptables -I INPUT 2 -p tcp --dport 3306 -j ACCEPT
 
</pre>
 
</pre>
|-valign="top"
 
 
||
 
||
 
<pre>
 
<pre>

Version du 15 décembre 2014 à 11:16

Introduction

En informatique, une base de données relationnelle est un stock d'informations décomposées et organisées dans des matrices appelées relations ou tables conformément au modèle de données relationnel. Le contenu de la base de données peut ainsi être synthétisé par des opérations d'algèbre relationnelle telles que l'intersection, la jointure et le produit cartésien.

Une base de données est un ensemble d'informations, connexes de manière directe ou indirecte, enregistrées dans un dispositif informatique. Dans une base de données relationnelle, les informations sont stockées sous forme de groupe de valeurs : les enregistrements. Un ensemble d'enregistrements relatif à un sujet forme une relation et est stocké dans une table. La base de données comporte une ou plusieurs tables et les sujets sont connexes.

Le modèle de données relationnel permet d'utiliser les opérateurs de l'algèbre relationnelle pour retrouver une information quelconque stockée dans la base de données, ainsi que les informations connexes.

Wikipedia


Nous allons installer parallèlement une base de données MySQL et PostGreSQL. Si vous vous demandez quelle est la différence entre les deux, c'est grossièrement une histoire de taille. Plus la base de données est grosse, plus il faudra opter pour PostGreSQL et inversement, pour faire un petit site Web, MySQL suffit largement.

Je vous laisse juger par vous-même ici

Installation

MySQL PostGreSQL
yum -y install mysql-server mysql
yum -y install postgresql-server 

Premier démarrage

Cette étape varie en fonction du SGBDR. Pour MySQL on va d'abord démarrer le moteur et ensuite l'initialiser alors que pour PostGreSQL c'est l'inverse.

MySQL

Accès local

Démarrage Initialisation
# service mysqld start
Initialisation de la base de données MySQL :  Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h web1 password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

                                                           [  OK  ]
Démarrage de mysqld :                                      [  OK  ]
# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

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):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
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.

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

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] Y
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
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!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... 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!

Accès distant

Pour accéder à distance à MySQL il faudra, en plus des étapes précédentes, ouvrir le pare-feu ainsi qu'accorder à un utilisateur le droit de se connecter à distance.

Pare-feu Ajout d'un utilisateur
# iptables -I INPUT 2 -p tcp --dport 3306 -j ACCEPT
# mysql -p
password:
mysql> grant all privileges on *.* to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)

Remplacez :

  • *.* par le nom des bases de données et des tables;
  • % par l'adresse IP du serveur

PostGreSQL

Initialisation Démarrage Changement de mot de passe
# service postgresql initdb
Initialisation de la base de données :                     [  OK  ]
# service postgresql start
Démarrage du service postgresql :                          [  OK  ]
# su postgres
bash-4.1$ psql
psql (8.4.20)
Type "help" for help.

postgres=# \password postgres
Enter new password:
Enter it again:
postgres=# \q
  • \q → ctrl+d

Outils d'administration

Installation

Avant d'aller plus loin, assurez-vous d'avoir installé le dépôt EPEL.

Ce dépôt va nous permettre d'installer phpMyAdmin pour MySQL et phpPgAdmin pour PostGreSQL qui sont des interfaces Web d'administration.

MySQL PostGreSQL
# yum -y install phpmyadmin
# yum -y install phpPgAdmin

Éditez le fichier /etc/phpPgAdmin/config.inc.php pour changer :

  • $conf['servers'][0]['host'] de "" à '127.0.0.1';
  • $conf['extra_login_security'] de true à false;

Enfin, éditez le fichier /var/lib/pgsql/data/pg_hba.conf pour changer tous les ident par des password

Vous pouvez maintenant accéder au site à l'URL suivante

MySQL PostGreSQL

http://127.0.0.1/phpmyadmin

PhpMyAdmin.jpg

http://127.0.0.1/phpPgAdmin

PhpPgAdmin.png

Accès à distance

Pour accéder à distance à l'interface il faut désactiver les restrictions d'accès au niveau d'Apache.

MySQL PostGreSQL

Modifiez le fichier /etc/httpd/conf.d/phpMyAdmin.conf de la sorte:

# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Allow from All
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Allow from All
   </IfModule>
</Directory>

.....

Modifiez le fichier /etc/httpd/conf.d/phpPgAdmin.conf de la sorte:

#
# This configuration file maps the phpPgAdmin directory into the URL space.
# By default this application is only accessible from the local host.
#

Alias /phpPgAdmin /usr/share/phpPgAdmin

<Location /phpPgAdmin>
    Order deny,allow
    Allow from all
    # Allow from .example.com
</Location>

Redémarrez Apache

#service httpd restart

Enregistrement dans le chargeur de démarrage

MySQL PostGreSQL
# chkconfig mysqld on
# chkconfig postgresql on

Sauvegarde et restauration

La sauvegarde (dump)

On appelle dump, une sauvegarde de la base à un instant T. Cette sauvegarde, qui se fait dans un fichier est destinée à être exportée sur une autre machine, soit pour une sauvegarde, soit pour un redéploiement (migration de serveur).

MySQL PostGreSQL
# mysql --host $host --user $user --password $pass $dbname >  $outfile

ou bien

# su mysql
$ mysqldump $dbname >  $outfile
  • $host → nom de la machine où se trouve la base de données;
  • $user → nom d'utilisateur ayant accès au données à dumper;
  • $pass → mot de passe associé à l'utilisateur;
  • $dbname → nom de la base de données;
  • $outfile → nom du fichier contenant le dump.
# su postgres
$ pg_dump $dbname > $outfile

ou bien pour sauvegarder toutes les bases !

# su postgres
$ pg_dumpall > $outfile
  • $dbname → nom de la base de données;
  • $outfile → nom du fichier contenant le dump.

La restauration

MySQL PostGreSQL
# mysql -h $host -u $user -p $pass $dbname < $infile
  • $host → nom de la machine où se trouve la base de données;
  • $user → nom d'utilisateur ayant accès au données à dumper;
  • $pass → mot de passe associé à l'utilisateur;
  • $dbname → nom de la base de données;
  • $infile → nom du fichier contenant le dump.
# su postgres
$ psql
postgres=# create database my_wiki; 
postgres=# \q
$ psql $dbname < $infile

ou bien si la commande dumpall à été utilisée:

# psql -f $infile postgres
  • $dbname → nom de la base de données;
  • $infile → nom du fichier contenant le dump.