Notes base de donnees MySql

De MicElectroLinGenMet.

Sécurisation serveur MySql (Source : Revue MISC 11-12/2002)

Comptes et mots de passe : Connexion :

  • mysql -u root mysql

avec password :

  • mysql -u root mysql -p

Changer mot de passe root

  • set password for root@localhost = password (’mot_de_passe’) ;

Supprimer password avec le nom de machine

  • DELETE FROM user WHERE Host=’nom_machine’ AND User=’root’ ;

Si un utilisateur doit se connecter à distance, rajouter l’adresse IP ou le nom de machine dans le champs ’Host’ de la table ’user’ ou ’%’ pour se connecter de n’importe ou.

Supprimer comptes sans mot de passe

  • DELETE FROM user WHERE Password=’’ ;

Supprimer la base de test

  • DROP DATABASE test ;

Activer modifications

  • FLUSH PRIVILEGES ;

Privilèges

Ajout d’un utilisateur ’utilisateur’ qui sera un super utilisateur avec les mêmes droits que root :

  • INSERT INTO user VALUES(’localhost’, ’utilisateur’, PASSWORD(’mot-de-passe’), ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’) ;

Donner les droits d’accès à ’utilisateur’ sur la base ’base_utilisateur’ de n’importe ou :

  • GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP ON base_utilisateur.* TO utilisateur@% IDENTIFIED BY "pwd" ;

Lister que les bases sur lesquelles l’utilisateur a des droits :

  • Dans /etc/my.cnf, section mysql, ajouter safe-show-database

Limiter les connexions : Dans /etc/my.cnf, pour 100 connections simultanées

  • set-variable = max_connections=100

pour 50 connexions simultanées par utilisateur

  • set-variable = max_user_connections=50

Perte du mot de passe administrateur : Relancer mysqld avec l’option --skip-grant-tables

Debian : L’utilisateur "

debian-sys-main

t" est déclaré dans la base mysql et est nécessaire au démarrage de MySql (ne pas supprimer). Il est déclaré dans

/etc/mysql/debian.cnf

avec son password.

Exemples de requêtes mySQL :

Création d’une Base.

  • CREATE DATABASE linux ;

Utilisation de la base linux :

  • USE linux ;

Création d’une table.

  • CREATE TABLE fichiers (Chemin VARCHAR (255) not null , Nom VARCHAR (255) not null ) comment = ’Fichiers divers sur Vesta’
  • CREATE TABLE tiers (id_tiers TINYINT UNSIGNED DEFAULT ’0’ NOT NULL AUTO_INCREMENT, nom_tier VARCHAR(80), PRIMARY KEY (id_tiers)) ;

Modification de la table "fichiers_critiques"(rajout de 2 colonnes).

  • ALTER TABLE fichiers_critiques ADD Programme_associe VARCHAR (64) not null , ADD Remarques VARCHAR (255) not null

Autre exemple avec une clé primaire.

  • ALTER TABLE noteslinux ADD id_notes smallint(5) unsigned NOT NULL auto_increment primary key ;

Affiche tous les enregistrements de la table "revues"

  • SELECT * FROM revues ;

Ajout nouvelle ligne

  • INSERT INTO revues (Nom, Numero, Date, Sujet, Domaine, Auteur, Remarques) VALUES (’Linux Magazine’, ’HS-8’, ’2001-8-1’, ’Sécuriser un serveur Postfix’, ’Sécurité’, ’Samuel Dralet’, ’’)
  • INSERT INTO typesoperation VALUES (’’, ’CH’) ;

Maj colonne ’Auteur’ si colonne ’Sujet’ = ’News et FTP avec Perl’ de la table revues.

  • UPDATE revues SET Auteur=’Eric Jacoboni’ WHERE Sujet=’News et FTP avec Perl’ ; # Autre exemple avec variables PHP :
  • UPDATE $table SET domaine=’$domaine’, fonction=’$fonction’, description=’$description’ WHERE id_notes=’$index’

Insert un fichier de type csv dans la table revues

  • LOAD DATA LOCAL INFILE ’/home/dan/table.csv’ REPLACE INTO TABLE revues FIELDS TERMINATED BY ’ ;’ OPTIONALLY ENCLOSED BY ’\"’ ESCAPED BY ’\\’ LINES TERMINATED BY ’\n’

Suppression d’une ligne.

  • DELETE FROM revues WHERE Nom = ’Maximum Linux’ AND Numero = ’6’ AND Date = ’2001-01-01’ AND Sujet = ’Découvrir le navigateur Lynx’ AND Domaine = ’Application’ AND Auteur = ’Michel Luczak’ AND Remarques = ’’

Ecrit le contenu de la table1 dans le fichier data.txt avec séparteurs ’,’

  • SELECT * FROM table1 INTO OUTFILE ’data.txt’ FIELDS TERMINATED BY ’,’ ;

Pour relire ce fichier, la bonne commande est :

  • LOAD DATA INFILE ’data.txt’ INTO TABLE table2 FIELDS TERMINATED BY ’,’ ;

Exemple de requête de jonction entre plusieurs tables : Soit les tables ccp categories souscategories tiers typesoperation d’une base compte

  • SELECT nom_typeoperation, no_cheque, dateoperation, nom_tier, noteoperation, nom_categorie, nom_souscategorie, montant FROM ccp, typesoperation, tiers, categories, souscategories WHERE no_typeoperation=id_typeoperation AND no_tier=id_tier AND no_categorie=id_categorie and no_souscategorie=id_souscategorie

Sauvegarde et restauration d’une base.

  • mysqldump -u dan linux -p > database_linux.mysql
  • mysql -u dan linux -p < database_linux.mysql

Autorise les SELECT complexe (long) :

  • mysql_query("SET OPTION SQL_BIG_SELECTS=1 ") ;




26 juin 2004


Administration wiki