Affichage des articles dont le libellé est mysql. Afficher tous les articles
Affichage des articles dont le libellé est mysql. Afficher tous les articles

12 janvier 2004

Créer sa propre base Mysql sur son compte unix ou linux ?

Vous avez un compte sur une machine Unix ou Linux et vous souhaitez créer ou utiliser votre propre base de données MySql ?
Et bien c'est très simple ...

1. Préliminaire

Tout d'abord vérifier que votre PATH est correctement configuré et que vous avez les droits nécessaires pour exécuter MySQL.

Maintenant il vous faut créer un fichier nommé .my.cnf que vous placerez à la racine de votre compte. Vous devez également créer quelques répertoires.
(Les noms et l'emplacement ne sont pas imposés).

Typiquement :


% touch ~/.my.cnf
% mkdir -p ~/var/run
% mkdir ~/var/log
% mkdir ~/var/mysql

3. Configuration

Ensuite il vous faut préciser le contenu du fichier .my.cnf. L'exemple qui suit vous donne les paramètres minimum à saisir. (à adapter suivant les besoins)


[client]
port=7885
socket=/home/thouveni/var/run/mysql.socket

[server]
port=7885
datadir=/home/thouveni/var/mysql
socket=/home/thouveni/var/run/mysql.socket
log=/home/thouveni/var/log/mysql.access.log
pid-file=/home/thouveni/var/run/mysql.pid
#set-variable = max_allowed_packet=5M
 
[safe_mysqld]
err-log=/home/thouveni/var/log/mysql.error.log
language=french

3. Initialisation

Vous devez également initialiser votre base avec le commande suivante :


% mysql_install_db --datadir=/home/thouveni/var/mysql

4. Démarrage

Voilà il vous reste à démarrer votre serveur comme ceci :


% safe_mysqld &

sur certain système le lanceur safe_mysqld s'appelle mysqld_safe.

Pour l'arrêter correctement et proprement :


% kill -s TERM `cat /home/thouveni/var/run/mysql.pid`

5. Problème

Par défaut la base refuse les connexions en provenance d'autres machines. Pour une utilisation distribuée et non sécurisée vous devez modifiez les autorisations.

La requête suivante permet à l'administrateur de la base de se connecter de n'importe quelle machine.


GRANT ALL PRIVILEGES ON * . * TO "test"@"%"

03 avril 2003

Monter un serveur Web sur une Mandrake 9.1 en utilisant uniquement la souris

Il est très simple pour un débutant de monter un serveur Web pour faire un peu de PHP ou pour utiliser des applications PHP. Voyons comment faire en 3 étapes

1. Installation

Pour cela, rendez-vous dans Centre de Contrôle Mandrake, rubrique Package, Installation de Nouveau Package.

Puis chercher les termes suivants, en prenant soin à chaque fois de cocher la case "Résultat de la recherche"

  • apache
  • mysql
  • php

Ensuite cliquer sur "Installer"

Si les résultats des recherches sont vides cela indiquera simplement que tout est déjà installé.

2. Démarrage

Pour démarrer les serveurs, il suffit de se rendre, toujours dans le Centre de Contôle, dans la rubrique système puis Configuration des services. Vous devriez trouver dans la liste le service "httpd" et le service "mysql". Cliquez sur le bouton Démarrer.

Si vous cochez la case "Au démarrage", vous n'aurait plus à faire cette opération à chaque fois que vous allumerez votre ordinateur.

3. Initialisation

Il vous reste à créer un répertoire portant le nom "public_html" pour y mettre vos fichiers. Pour cela sous Konqueror rendez-vous dans votre répertoire personnel (en cliquant, par exemple, sur l'icon Maison" puis dans le menu "Edtion / Nouveau / Nouveau Répertoire"

Vous devez absolument changer les propriétés de ce nouveau répertoire. Pour cela en plaçant votre souris sur le répertoire public_html cliquez "Bouton Droit / Propriété / Autorisations" et cocher la case "Execution" pour les "Autres"

4. A vous de jouer

Voilà tout est installé si vous placez des fichiers PHP ou HTML dans le répertoire public_html vous pourrez y accéder depuis votre navigateur préféré en tapant l'URL suivante :

http://localhost/~votre_login/votre_fichier.php

24 mars 2003

Comment écrire une requête récursive avec MySQL ?

Une représentation hiérarchie dans une table consiste à stocker pour chaque enregistrement l'identifiant de son père.

Par exemple pour représenter cette hiérarchie :

  • Europe
    • France
      • Lorraine
      • Alsace
    • Allemagne
      • Ruhr
      • Saar

On utilisera une table de ce style :

id libelle id_pere
1 Europe -
2 France 1
3 Allemagne 1
4 Alsace 2
5 Lorraine 2
6 Ruhr 3
7 Saar 3

Maintenant comment récupérer cette hiérarchie ? A ce que je sache, actuellement avec MySQL?, on ne peut pas le faire en une seule requête SQL (contrairement à ORACLE). Par conséquence, il nous faut ruser en utilisant une fonction récursive.

En PHP cela nous donne :

<?php

function select_recursif($id_pere = null)
{
  $rows = array();
  $i = 0;
  $requete = "SELECT * FROM matable WHERE id_pere";
  $requete .= ($id_pere == null) ? ' is null' 
                                 : ' = '.$id_pere;
  $res = $GLOBALS['db']->query($requete);
  while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
    $rows[$i] = $row;
    $rows[$i]['fils'] = select_recursif($row['for_idt']);
    ++$i;
  }
  $res->free();

  return ((!$i) ? null : $rows);
}

require_once('DB.php');

$db = DB::connect('mysql://root:@localhost/mabase', true);
if (DB::isError($db)) die($db->getMessage());

print_r (select_recursif());

?>