Dans le baluchon

apt-get update -> erreur NO_PUBKEY

RSS Logiciels libres RSS Linux

© Syswear, PNG - 17.2 ko, http://static.syswear.com/images/t-shirts/folded/apt_get_a_folded_marge_black_folded.png « It is a pain » comme disent les engliches lorsque vous souhaitez ajouter un dépôt non officiel à votre sources.list [1]. Il est nécessaire à chaque fois d'importer la clé publique qui n'est pas forcément disponible sur le site du dépôt afin d'éviter les erreurs du type :


Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY AFC0079DA217C012

Il existe un site qui référence les clés publiques de ces dépôts. C'est le site pgp.mit.edu qui joue un intermédiaire de confiance sur la sécurisation de ces clés. Grâce à lui, l'enregistrement d'une clé dans le système est tout ce qu'il y a de plus simple :


$ gpg --keyserver pgp.mit.edu --recv-keys AFC0079DA217C012
gpg: le porte-clés `/home/balluche/.gnupg/secring.gpg` a été créé
gpg: requête de la clé A217C012 du serveur hkp wwwkeys.eu.pgp.net
gpg: /home/balluche/.gnupg/trustdb.gpg: base de confiance créée
gpg: clé A217C012: clé publique « Marco van Zwetselaar <zwets@zwets.com> » importée
gpg: aucune clé de confiance ultime n'a été trouvée
gpg: Quantité totale traitée: 1
gpg:               importée: 1

$ gpg --armor --export AFC0079DA217C012 | sudo apt-key add -
OK

Ensuite :


$ sudo apt-get update

Et plus d'erreurs !

Facile, non ?



La concrétude du planning

RSS Gestion de projet RSS Définitions
RSS Citations

La concrétude c'est le caractère de ce qui est concret, matériel.

La concrétude du planning c'est le réalisme de la planification au regard de l'organisation effective de l'entreprise.



Guerre et drogue

RSS Misc RSS Citations

« La guerre c'est comme la coke, c'est bon au début ensuite çà détruit » [Roselyne Bachelot]

Suivre les nouveautés des moteurs de recherche

RSS Moteurs de recherche

01/2013 - les services labs ne fonctionnent plus ...

Comment suivre l'actualité de vos moteurs de recherche préférés ? Google et Yahoo ! par exemple proposent le lab [2] :

les annonces à la presse de Google en Français [3] RSS
les options de Google [4] RSS
les APIs de Google RSS

Les icônes vous permettent de vous abonner aux flux RSS.



Urlencode et Urldecode

RSS Conception RSS ... de sites RSS Services web

Lors de l'utilisation de services web en architecture REST en particulier, il arrive qu'il faille reprendre les paramètres passés juste après avoir validé un formulaire par exemple. Dans ce cas, les Urls sont codées. Pour les décoder il faut utiliser des fonctions de décodage comme celle fournie par PHP : urldecode. Les formulaires ci-dessous permettent cela :

Url à décoder

Et pour encoder :

Url à encoder



Lecture de MySQL Guide Officiel

RSS Misc RSS Lectures
RSS Bases de données RSS Certifications

Chapitre 12 - Problèmes de sécurité

Cette partie est des plus intéressantes dans l'apprentissage de MySQL. Il y a 2 niveaux de sécurité à vérifier : celui lié au système de fichiers et celui lié au réseau.

Pour commencer quelques vérifications s'imposent :

  1. Assurez-vous que le mot de passe root est défini et suffisamment long et très difficile (voire impossible) à cracker
  2. Dans un hébergement mutualisé, vérifiez les droits d'accès aux fichiers. MySQL doit se lancer avec un compte non root, normalement, le compte MySQL.

Voici la méthode pour sécuriser l'installation de MySQL :


$ chown -R mysql /usr/local/mysql
$ chgrp -R mysql /usr/local/mysql
$ chmod u=rwx,go=rx /usr/local/mysql
$ chmod u=rwx,go=rx /usr/local/mysql/bin
$ chmod a=rwx /usr/local/mysql/libexec
$ chmod -R go-rwx /usr/local/mysql/data
$ chown mysql /etc/my.cnf
$ chgrp mysql /etc/my.cnf
$ chmod u=rw,go=r /etc/my.cnf

En tant que root, le serveur peut-être démarré avec l'option —user=mysql, ainsi il s'exécute avec ce compte. Il faut savoir qu'à l'installation, MySQL ne créé pas de mots de passe. MySQL créé des comptes anonymes dont les droits sont limités sous UNIX mais sous Windows - attention ! - ils ont tous les droits !

Il y a différentes façons d'attribuer des mots de passe. Utilisons MySQL :


mysql
> UPDATE user SET Password = PASSWORD('rootpass') WHERE user = 'root';

--
et n'oubliez pas de recharger la table des droits !

mysql> FLUSH PRIVILEGES;

Le privilège ALL désigne tous les privilièges à l'exception de GRANT OPTION qui est le privilège qui permet de déléguer ses privilèges. USAGE désigne l'absence de tout privilège sauf celui de se connecter au serveur.

Il est possible d'attribuer des privilèges relatifs aux ressources du système.


MAX_CONNECTIONS_PER_HOUR
MAX_QUERIES_PER_HOUR
MAX_UPDATES_PER_HOUR

La table des droits

-  user : comptes utilisateurs
-  db : privilèges pour la base
-  tables_priv : privilèges pour les tables
-  columns_priv : privilèges pour les colonnes

Les tables des droits sont stockés en mémoire et mises à jour à chaque commande GRANT, REVOKE ou SET PASSWORD ou explicitement.

La commande GRANT est très souple. On peut définir des droits en une seule fois pour plusieurs bases de données et plusieurs tables. On peut spécifier un utilisateur quel que soit l'hôte ou se limiter à un hôte. Le joker * ou % peut représenter tout une partie de plusieurs tables, adresses IP et noms d'hôtes.


Ex :
ON bd.test_*

@localhost
192.168.%

Les droits peuvent se surcharger. Dans ce cas, le serveur agit comme si la table des droits était triée par hôte et utilisateur.


mysql> SELECT * from user ORDER BY Host,User

Si vous avez oublié le mot de passe, le serveur offre la possibilité d'être lancé en ignorant la tables des droits grâce à l'option —skip-grant-tables qu'il vaut mieux associer à l'option —skip-networking pour éviter que les données soient vulnérables à un accès réseau.

Chapitre 13 - Optimiser la vitesse des requêtes

Voilà un chapitre utile. Optimiser MySQL revient en gros, et le livre insiste bien là dessus, à choisir de bons index. Ils doivent être choisis selon qu'on accède plutôt en lecture ou plutôt en écriture. Certaines requêtes empêchent l'utilisation des index. Pour le découvrir il faut utiliser l'instruction EXPLAIN. Les index sont de 4 types :

-  non uniques
-  uniques
-  primaires
-  plein texte : pour la recherche dans le texte brut d'un champs de type TEXT ou BLOB

Pour créer des index optimisés, il convient de suivre les règles suivantes :

-  déclarez les colonnes indexées en non null
-  n'indexez pas une colonne si ce n'est absolument nécessaire
-  utilisez les préfixes d'index [5]
-  les index ne doivent pas se chevaucher

Afin d'analyser le résultat d'une optimisation, on peut :

-  regarder dans le journal des requêtes lentes
-  utiliser EXPLAIN

Les paramètres importants de EXPLAIN sont :

-  rows : nombre de lignes parcourues
-  type : type d'index utilisé (system, const, eq_ref, ref, range, index, ALL dans l'ordre de rapidité)
-  Extra : fournit des informations supplémentaires. Using filesort, Using temporary et Range checked for each record, indiquent que la requête n'est pas efficace.

Si une requête n'est pas efficiente alors il faut l'optimiser. On peut agir sur :

-  l'insertion des données [6]
-  les modificateurs de priorité (HIGH_PRIORITY et LOW_PRIORITY)
-  les types de tables
-  les types des champs (INT est plus efficient que CHAR, qui est plus efficient que VARCHAR)
-  le format de table :

  • MAX_ROWS : nombre maximal de lignes pour une table
  • AVG_ROW_LENGTH : taille moyenne d'un enregistrement

L'option limit du SELECT permet également de réduire le temps d'exécution.

On arrive à la page 485.



Discussion(s)