Serveurs de bases de données

From Alliance Doc
Jump to navigation Jump to search
This site replaces the former Compute Canada documentation site, and is now being managed by the Digital Research Alliance of Canada.

Ce site remplace l'ancien site de documentation de Calcul Canada et est maintenant géré par l'Alliance de recherche numérique du Canada.

This page is a translated version of the page Database servers and the translation is 100% complete.
Other languages:


Serveurs de bases de données pour la recherche

Les serveurs de bases de données MySQL et Postgres sont disponibles sur Cedar et Graham.

  • Cedar
    • MySQL
      • Description : serveur d’usage général pour configurer et traiter des tables SQL
      • Nom long : cedar-mysql-vm.int.cedar.computecanada.ca
      • Nom court : cedar-mysql-vm (peut être employé sur la plupart des nœuds de calcul)
      • Version : MariaDB version 10.4 Community Edition
      • Documentation : http://www.mariadb.com
    • Postgres
      • Description : serveur d’usage général pour configurer et traiter des tables SQL; comprend l’extension PostGIS pour les données spatiales
      • Nom long : cedar-pgsql-vm.int.cedar.computecanada.ca
      • Nom court : cedar-pgsql-vm (peut être employé sur la plupart des nœuds de calcul)
      • Version : PostgreSQL version 10.1, extension PostGIS version 2.4 disponible
      • Documentation : https://www.postgresql.org et https://postgis.net/documentation
  • Graham
    • MySQL
      • Description : serveur d’usage général pour configurer et traiter des tables
      • Adresse IP du serveur : 199.241.163.99
      • Nom du serveur : cc-gra-dbaas1.sharcnet.ca
      • Version : MariaDB version 10.2
      • Documentation : http://www.mariadb.com

Serveur MySQL sur Cedar

Le serveur MySQL sur Cedar offre MariaDB 10.4 qui est compatible avec les autres versions MySQL. Pour l'information sur la compatibilité, consultez https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/. Pour les améliorations et nouvelles fonctionnalités de MariaDB 10.4, consultez https://mariadb.com/kb/en/changes-improvements-in-mariadb-104/.

Le serveur MariaDB est l'instance cedar-mysql-vm (nom long, cedar-mysql-vm.int.cedar.computecanada.ca). Si vous possédez un compte sur le serveur MySQL, vous pouvez vous connecter uniquement par le nœud frontal (cedar.computecanada.ca), les nœuds de calcul ou le portail Cedar (https://gateway.cedar.computecanada.ca).

Pour des raisons de sécurité, vous ne pouvez pas vous connecter directement au serveur de base de données via SSH.

Compte et connexion

Vous devez détenir un compte MySQL pour avoir le privilège requis pour créer une base de données. Pour obtenir un compte sur le serveur MySQL de Cedar, contactez le soutien technique en indiquant

  • le nom d'utilisateur pour votre compte avec l'Alliance et
  • l'espace nécessaire pour la base de données de votre projet.

Nous créerons un compte MySQL pour lequel le nom d'utilisateur sera celui de votre compte avec l'Alliance ainsi qu'une chaîne de 16 nombres aléatoires comme mot de passe. Un fichier nommé .my.cnf sera enregistré dans votre répertoire /home contenant le nom d'utilisateur, le mot de passe, le nom du serveur de base de données et d'autres renseignements nécessaires pour vous connecter. Ce fichier est confidentiel. Son contenu ne peut pas être modifié, mais le fichier peut être lu ou supprimé. Par contre, en supprimant ce fichier, vous perdrez l’accès à votre base de données.

Lancez le client mysql pour vous connecter au serveur MySQL. Une version moins récente du client est disponible sans que vous ayez à charger un module, mais vous n'aurez pas les dernières fonctionnalités du serveur. Nous vous recommandons le charger une version plus récente du client avec

[name@server ~]$ module load mariadb
[name@server ~]$ mysql --version
 mysql  Ver 15.1 Distrib 10.4.11-MariaDB, for Linux (x86_64) using  EditLine wrapper

Testez la configuration de votre compte MySQL avec

Question.png
[name@server ~]$ mysql
MariaDB [(none)]> show databases;
MariaDB [(none)]> quit

N'utilisez pas les options -p ou -h en argument en lançant mysql. Le mot de passe et le nom du serveur proviendront automatiquement du fichier .my.cnf.

Vous pouvez soumettre une commande SQL à partir du nœud frontal puisque l'utilisation du CPU provient pour une grande part du côté du serveur de base de données. Toutefois si votre script contient plusieurs commandes SQL et utilise beaucoup le CPU, il doit faire partie d'une tâche soumise à l'ordonnanceur; voyez Exécuter des tâches pour plus d'information.

Configuration

Pour créer des tables et faire des requêtes, vous devez créer votre propre base de données dont le nom doit commencer par nom de l'utilisateur_, soit votre nom d'utilisateur MySQL. Si votre nom d'utilisateur est david, le nom de la base de données doit commencer par david_ et les commandes pour créer david_db1 seraient

Question.png
[name@server ~]$ mysql
 MariaDB [(none)]> CREATE DATABASE david_db1;
 MariaDB [(none)]> quit

Vous pouvez créer plusieurs bases de données, mais leurs noms doivent commencer par nom d'utilisateur_. Ces bases de données seront accessibles uniquement par vous à partir du nœud frontal (cedar.computecanada.ca), des nœuds de calcul ou du portail Cedar (https://gateway.cedar.computecanada.ca) et vous aurez tous les privilèges pour la création d'objets, par exemple les tables et les vues.

Utilisation de votre base de données

Supposons que votre compte est david et que vous avez créé la base de données david_db1. Pour l'utiliser, lancez

Question.png
[name@server ~]$ mysql
 MariaDB [(none)]> -- List available databases. Confirm david_db1 is in the list
 MariaDB [(none)]> SHOW DATABASES;
 MariaDB [(none)]> -- Get into the database
 MariaDB [(none)]> USE david_db1;
 MariaDB [(none)]> ... Issue SQL commands. See below for information.
 MariaDB [(none)]> quit

Consultez les sites web suivants pour plus de renseignements sur MariaDB :

Partager vos données MySQL

Si vous avez un compte MySQL sur Cedar, vous pouvez partager vos données. Pour partager une table :

  1. Activez un environnement MySQL avec mysql.
  2. Sélectionnez la base de données et lancez USE nom de la base de données;.
  3. Lancez GRANT priv_type ON matable TO ′utilisateur′@'172.%';priv_type et matable sont le type d'accès à la table et user le nom de l'utilisateur avec qui David veut partager sa table.


Par exemple, si David veut partager la table matable de la base de données david_db avec John en lecture seule, les commandes sont :

Question.png
[name@server ~]$ mysql
 MariaDB [(none)]> USE david_db;
 MariaDB [(none)]> GRANT SELECT on mytable to 'john'@'172.%';
 MariaDB [(none)]> quit;

Serveur PostgreSQL sur Cedar

Le serveur Postgres sur Cedar offre la version 10.2 de Postgres et la version 2.4 de l'extension PostGIS.

Le serveur PostgreSQL est l'instance cedar-pgsql-vm (nom long, cedar-pgsql-vm.int.cedar.computecanada.ca). Si vous possédez un compte sur le serveur PostgreSQL, vous pouvez vous connecter uniquement par le nœud frontal (cedar.computecanada.ca), les nœuds de calcul ou le portail Cedar (https://gateway.cedar.computecanada.ca).

Pour des raisons de sécurité, vous ne pouvez pas vous connecter directement au serveur de base de données via SSH.

Pour obtenir un compte sur le serveur PostgreSQL de Cedar, contactez le soutien technique en indiquant

  • votre nom d'utilisateur,
  • l'espace nécessaire pour la base de données de votre projet,
  • si vous avez besoin de PostGIS 2.4.

Compte et connexion

Nous créerons un compte PostgreSQL pour lequel le nom d'utilisateur sera celui de votre compte avec l'Alliance. Vous aurez accès à une base de données dont le nom sera <nom d'utilisateur>̠db. Vous ne pouvez pas créer une base de données, mais si vous en avez besoin de plus d'une, contactez le soutien technique.

La méthode d'authentification fait en sorte que vous n'avez pas besoin d'un mot de passe pour accéder à votre compte PostgreSQL sur Cedar. Pour des raisons de sécurité, le mot de passe pour votre compte avec l'Alliance ne doit JAMAIS être requis ou utilisé dans un script. Les utilisateurs n'ont ainsi pas d'accès direct aux bases de données des autres utilisateurs.

Lancez le client psql pour vous connecter au serveur PostgreSQL. Une version moins récente du client est disponible sans que vous ayez à charger un module, mais vous n'aurez pas les dernières fonctionnalités de la version 10. Nous vous recommandons le charger une version plus récente avec

[name@server ~]$ module load postgresql
[name@server ~]$ psql --version
psql (PostgreSQL) 10.2

Utilisation de votre base de données

Supposons que votre compte est david et qu'on vous a assigné la base de données david_db. Pour l'utiliser à partir du nœud frontal, lancez

Question.png
[name@server ~]$ psql -h cedar-pgsql-vm -d david_db
 david_db=> -- List names of tables in your database
 david_db=> \dt
 david_db=> ... Issue SQL commands. See below for more information.
 david_db=> -- Quit
 david_db=> \q

Consultez les sites web suivants pour plus de renseignements sur PostgreSQL :

Partager vos données PostgreSQL

Pour partager les données de votre base de données PostgreSQL,

  • la personne avec laquelle vous voulez partager vos données doit détenir un compte PostgreSQL sur la grappe (voir ci-dessus),
  • donnez à cette personne un accès connect à votre base de données,
  • pour chaque table ou vue que vous voulez partager, donnez aussi un ou plusieurs des accès select, update, insert et delete,
  • l'accès à une table, une vue ou à la base de données peut être révoqué.

Dans cet exemple, David partage une table avec Kim :

Question.png
[name@server ~]$ psql -h cedar-pgsql-vm -d david_db
 david_db=> -- Give kim connect access to the database
 david_db=> grant connect on database david_db to kim;
 david_db=> -- Give kim select-only access to a table called mytable
 david_db=> grant select on mytable to kim;
 david_db=> -- Quit
 david_db=> \q

Ici, Kim accède à la table partagée :

Question.png
[name@server ~]$ psql -h cedar-pgsql-vm -d kim_db
 kim_db=> -- Connect to the database containing the table to be accessed
 kim_db=> \c david_db
 david_db=> -- Display the rows in the shared table
 david_db=> select * from mytable;
 david_db=> -- Quit
 david_db=> \q

Ici, David révoque le droit d'accès de Kim :

Question.png
[name@server ~]$ psql -h cedar-pgsql-vm -d david_db
 david_db=> -- Revoke kim's select-only access to a table called mytable
 david_db=> revoke select on mytable from kim;
 david_db=> -- Revoke kim's connect access to the database
 david_db=> revoke connect on database david_db from kim;
 david_db=> -- Quit
 david_db=> \q

Serveur MySQL sur Graham

Les étapes pour obtenir et utiliser un compte sur le serveur MySQL de Graham sont semblables à celles décrites ci-dessus pour Cedar.


Serveurs infonuagiques

Bases de données à la demande (DBaaS)

Si vous avez besoin de plus qu'une instance pour traiter votre base de données, vous pouvez utiliser MySQL/MariaDB ou Postgres sur un ordinateur physique. Les copies de sauvegarde se font chaque jour et sont conservées pour trois mois. Pour y accéder, contactez le soutien technique.

Dans votre demande, indiquez le réseau client ou l'adresse IP à partir de laquelle vous voulez accéder à la base de données.

Type Nom de l'hôte Port TCP
mysql dbaas101.arbutus.cloud.computecanada.ca 3306
pgsql dbaas101.arbutus.cloud.computecanada.ca 5432


Téléchargez le certificat de l'autorité d'authentification.

PostgreSQL

Votre instance utilisera une connexion ssl pour se connecter à l'hôte DBaaS. Dans l'exemple suivant, la connexion se fait à l'hôte DBaaS par user01 et utilise la base de données dbinstance via une connexion ssl.

psql --set "sslmode=require" -h dbaas101.arbutus.cloud.computecanada.ca -U user01 -d dbinstance
Password for user user01: 
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
dbinstance=> \l dbinstance
                               List of databases
    Name    | Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
------------+--------+----------+-------------+-------------+-------------------
 dbinstance | user01 | UTF8     | en_US.UTF-8 | en_US.UTF-8 | user01=CTc/user01
(1 row)

La connexion ssl s'applique et les connexions en texte brut échoueront.

MariaDB/MySQL

Votre instance utilisera une connexion ssl pour se connecter à l'hôte DBaaS. Dans l'exemple suivant, la connexion se fait à l'hôte DBaaS par user01 et utilise la base de données dbinstance via une connexion ssl.

mysql --ssl -h dbaas101.arbutus.cloud.computecanada.ca -u user01 -p dbinstance
Enter password: 
MariaDB [dbinstance]> show databases;
+--------------------+
| Database           |
+--------------------+
| dbinstance         |
| information_schema |
+--------------------+
2 rows in set (0.001 sec)

Si vous essayez de vous connecter avec du texte brut, votre authentification échouera.

mysql -h dbaas101.arbutus.cloud.computecanada.ca -u user01 -p dbinstance
Enter password: 
ERROR 1045 (28000): Access denied for user 'user01'@'client.arbutus' (using password: YES)