Différences entre versions de « Sql install »
| Ligne 45 : | Ligne 45 : | ||
# systemctl start mysqld.service | # systemctl start mysqld.service | ||
</pre> | </pre> | ||
| + | <pre> | ||
Initialisation de la base de données MySQL : Installing MySQL system tables... | Initialisation de la base de données MySQL : Installing MySQL system tables... | ||
OK | OK | ||
Version du 11 février 2018 à 19:22
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.
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
# systemctl start mysqld.service 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) mysql> flush privileges; Remplacez :
|
PostGreSQL
Accès local
| Initialisation | Démarrage | Changement de mot de passe |
# service postgresql initdb Initialisation de la base de données : [ OK ] |
# service postgresql start
# systemctl start postgresql.service |
# 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
|
Accès distant
Pour accéder à distance à PostgreSQL il faudra, en plus des étapes précédentes, ouvrir le pare-feu, changer l'adresse d'écoute et autoriser l'hôte à se connecter à distance.
| Pare-feu | Changement de l'adresse d’écoute | Ajout d'un utilisateur |
# iptables -I INPUT 2 -p tcp --dport 5432 -j ACCEPT |
Dans le fichier vi /var/lib/pgsql/data/postgresql.conf changez la ligne : listen_addresses = 'localhost' en listen_addresses = '*' |
Autorisez l'hôte à se connecter en ajoutant à la fin du fichier la ligne suivante: host all all 192.168.100.137/32 password Remplaçez 192.168.100.137 par l'adresse IP de la machine cliente. |
|
Vous pouvez maintenant vous connecter depuis une machine distante grâce à la commande: # psql -h 192.168.100.129 -d postgres Remplacez :
| ||
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 :
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 |
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
# systemctl restart httpd.service | |
Enregistrement dans le chargeur de démarrage
| MySQL | PostGreSQL |
# chkconfig mysqld on
# systemctl enable mysqld.service |
# chkconfig postgresql on
# systemctl enable postgresql.service |
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
|
# su postgres $ pg_dump $dbname > $outfile ou bien pour sauvegarder toutes les bases ! # su postgres $ pg_dumpall > $outfile
|
La restauration
| MySQL | PostGreSQL |
# mysql -h $host -u $user -p $pass $dbname < $infile
|
# 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
|