Sql install
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 / Mariadb
Accès local
Démarrage | Initialisation |
# service mysqld start ou # service mariadb start
# systemctl start mysqld.service ou # systemctl start mariadb.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 |
Sur CentOS < 8 # service postgresql initdb Initialisation de la base de données : [ OK ] Sur CentOS > 8 # /usr/bin/postgresql-setup --initdb |
# 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
|