News MYSQL

le 06/09/2007 à 20:38
Les injections SQL par l'exemple
Que faire avec une injection SQL ? Il y a le classique contournement d'identification ou la destruction de tables... Mais on peut en faire bien d'autre, comme :
- deviner des noms de colonnes
- deviner des noms de table
- trouver des noms d'utilisateur
- modifier un utilisateur existant
- attaquer un mot de passe
- créer un utilisateur
- envoyer un mot de passe

Heureusement, le même article présente quelques solutions pour se protéger contre ces tentatives.

- SQL Injection Attacks by Example
- Zain for go blog
Note de l'auteur :

"Mon cahier technique" propose un atelier performance en insertion dans trois moteurs de tables : InnoDB, MyISAM et MEMORY. Plusieurs conclusions sortent de cette étude :
- delayed_key_write est important pour obtenir le meilleur des performances de MyISAM
- Memory est le plus rapide, mais MyISAM est tout à fait respectable

D'après moi, l'étude gagnerait à inclure aussi le moteur Archive de MySQL, qui est justement fait pour stocker de grandes quantité de données. Il prend moins de place sur le disque, et groupe les écritures.

L'autre aspect serait l'étude de la vitesse avec des connexions concurrentes (mysqlslap) et des données. Lors des mesures de vitesse, il ne faut jamais oublier qu'une table sera rarement sollicitée par une seule connexion, mais part une multitude. La quantité de données déjà en place est aussi un facteur limitant à la vitesse. Tout cela joue, et généralement très négativement.

- MySQL Engine INSERT speed
- Mon cahier technique
le 05/09/2007 à 20:15
Nouvelle version de MySQL : 6.0.2
MySQL 6.0.2, la dernière version de développement du système de base de données Open Source, a été publiée. C'est une version alpha : elle permet de tester les nouvelles fonctionnalités, notamment le moteur Falcon, mais il est recommandé de sauver ses données avant de changer de version, et d'éviter d'utiliser cette version en production.

Nouveauté de la version 6.0.2 :
- Support de Mac OS X Intel (mais pas de binaires encore)
- Support de Windows 64 bits
- Support des espaces de tables
- Ajout de paramètres : falcon_log_windows, falcon_index_chill_threshold, falcon_record_chill_threshold, falcon_initial_allocation et falcon_disable_fsync.
- Retraits de paramètres : falcon_max_record_memory et falcon_min_record_memory

32 bogues corrigés en MySQL 6.0.2, tous portants sur le nouveau moteur Falcon.

Seuls Windows et Linux sont des plates-formes supportées à cette heure. Mac OSX est compilable sur Intel, mais n'est pas encore une plate-forme supportée.

- MySQL
- Téléchargement MySQL 6.0
- Toutes les sources de PHP et MySQL
- MySQL 6.0.2
- Rapports d'erreurs et corrections
Une requête simple, une colonne indexée, une table bien à jour : pourtant , MySQL refuse d'utiliser l'index qui lui est offert, et se lance dans un scan de table complet, pendant une heure et demi.
Quelle estimation a-t-il fait de la réalité pour contre-carrer les plans établis ?
Et surtout, comment résoudre ce dilemme ?

Simplement, en sachant comment fonctionne MySQL.

- Quand l'optimiseur ne veut pas d'un index
le 04/09/2007 à 19:59
Le Web 2.0 et MySQL
Comment améliorer la performance, la montée en charge et la disponibilité dune architecture Web 2.0 avec MySQL et MySQL Cluster.

Le Web 2.0 représente la seconde génération de services disponibles sur le web permettant aux utilisateurs de collaborer et de partager des informations en ligne. Une des caractéristiques du Web 2.0 est que ce sont les données qui conduisent son évolution. Durant ce séminaire web nous explorerons comment les sociétés déploient des architectures et applications Web 2.0 pilotées par MySQL et MySQL Cluster.

Ces applications incluent :
- Blogging
- Optimisation de moteurs de recherche
- Partage de données multimédia (photos, vidéos, musique)
- Communautés en ligne
- Gestion de documents (wikis)

Nous étudierons également comment gérer :
- La montée en charge
- La disponibilité
- Le coût
- La gestion des sessions
- La création et gestion de contenu dynamique

QUI : Serge Frezefond, Consultant, MySQL France

QUAND : Mercredi 12 Septembre 2007: 10h00 CET (heure de Paris)
Présentation de 45 minutes suivie par questions/réponses

Pour comprendre comment améliorer la performance, la montée en charge et la disponibilité dune architecture Web 2.0 avec MySQL et MySQL Cluster.

- Inscription au webinar "Le Web 2.0 et MySQL"
le 01/09/2007 à 23:04
Nouveau site MySQL.com
Si vous ne l'avez pas encore remarqué, le site de mysql.com a changé.

Le design a été modifié pour une version plus moderne et épurée. Tout le site y est passé, y compris la partie communauté. Les couleurs sont toujours celles de MySQL.

Çà change sans être une révolution.

- MySQL
init_connect est une variable système MySQL qui exécute une commande SQL au moment de la connexion d'un utilisateur au serveur. Le concept ressemble aux inclusions PHP auto_prepend : on peut adapter la configuration du serveur à ce moment-là, ou bien réaliser diverses opérations.

Markus Popp propose une solution pour noter les dates de dernières connexions des utilisateurs, et la documentation MySQL suggère de modifier à la volée certaines configurations sans toucher à la configuration de base du serveur (SET AUTO_COMMIT=0).

init_connect n'est pas activée pour les utilisateurs ayant le droit de SUPER, afin de ne pas bloquer leur accès : ce sont les seuls qui pourront débloquer un script mal écrit! En cas d'échec de la commande init_connect (erreur de syntaxe), la connexion est refusée.

- init_connect system variable
- Log incoming MySQL connections to a table
- 5.2.3. Variables serveur système
le 30/08/2007 à 22:44
Nouvelle version de MySQL : 5.1.21
MySQL 5.1.21, la dernière version du système de base de données Open Source, a été publiée. C'est une version bêta : il est recommandé de sauver ses données avant de changer de version, et d'éviter d'utiliser cette version en production.

Modifications incompatibles avec les versions précédentes :
- Changement incompatible : les log de requêtes lentes et générales sont maintenant des tables MySQL par défaut, et non plus des fichiers. Il est recommandé de préciser explicitement son stockage
- L'option --syslog introduite en 5.1.20, fonctionne correctement maintenant.
- Le comportement par défaut de log de mysqld_safe est --skip-syslog, et non pas
- Une nouvelle option, --syslog-tag=tag, modifie les tags par défaut de mysqld_safe et mysqld
- Plusieurs programme MySQL acceptent maintenant les options --debug-check et --debug-info
- Le support des transactions avec le stockage fédéré a été désactivé
- Les commandes préparées sont maintenant stockées dans le cache de requêtes
- La réplication est maintenant possible vers une table qui comporte plus de colonne que nécessaire.
- Le thread esclave a une meilleure priorité pour travailler sur les tables InnoDB

Corrections MySQL 5.1.21 :

- 207 bogues ont été corrigés.
- Correction incompatible : plusieurs colonnes ont été ajoutées dans les tables mysql pour supporter les jeux de caractères dans les noms des routines stockées sur MySQL. Il est recommandé d'exporter ses procédures, avant la mise à jour, puis de le réimporter après, pour profiter de cette correction.

- MySQL
- Téléchargement MySQL 5.1
- MySQL 5.1.21
- Rapports d'erreurs et corrections
le 29/08/2007 à 22:27
MySQL : misères et solutions
Note de l'auteur :

Voici deux billets tombés sur mes téléscripteurs presque en même temps : d'abord, les misères d'un ancien administrateur Oracle, qui découvre que autocommit est désactivé par défaut (le contraire d'Oracle). Il finit par résoudre son problème avec une procédure de connexion : une petite fonction stockée sur le serveur, qui est exécutée automatiquement à chaque connexion.

L'autre relate les tribulations d'un utilisateur de cluster, qui finalement revient à la réplication.

Petites misères et solutions : beaucoup d'informations pratiques du terrain à chaque fois. Par exemple, InnoDB produit 50% moins de données si le nombre de connexion simultanée augmente de 100%. Intéressant.

- Out with cluster, hello replication
le 29/08/2007 à 22:25
4 conseils de Peter Zaitsev
Peter Zaitsev se déchaîne sur une série de question qui nous semblerait évidente, mais qui demande plus de finesse qu'en apparence.

- SQL_CALC_FOUND_ROWS, qui compte le nombre de lignes trouvées même en cas de LIMIT, fait-il vraiment gagner le temps d'une seconde requête?
- Faut-il indexer absolument toutes les colonnes qui sont dans une clause WHERE ?
- Est-ce que des index redondants sur une même colonne sont toujours inutiles?
- Où donc passe la mémoire des procédures stockées ?

Bref, beaucoup de petits points techniques, testées grandeur nature.

- To SQL_CALC_FOUND_ROWS or not to SQL_CALC_FOUND_ROWS ?
- Do you always need index on WHERE column ?
- Redundant index is not always bad
- Memory allocation in Stored Function
LoadingChargement en cours