Potes 'n' Roll !

L'Agora => Informatique & Multimédia => Discussion démarrée par: Nico le 15 Septembre 2005 à 11:58

Titre: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Nico le 15 Septembre 2005 à 11:58
Je sais : tout le monde ne fait pas de l'élevage de base de donénes SQL , mais je pense que ce topic peut se révéler utile pour certains d'entre nous (Kian si tu nous regarde :mrgreen: )

Déjà quelques bons liens :

http://sgbd.developpez.com/ pour pouvoir se perfectionner
http://www.sqlfacile.com pour débuter
http://wwwlsi.supelec.fr/www/yb/poly_bd/sql/tdm_sql.html : un très bon cours pour permettre l'auto-apprentissage du SQL
http://www.kianouch.com/forum/index.php?action=pm;sa=send;u=7 pour l'assistance  :mdr2:
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: MCL80 le 6 Décembre 2006 à 19:16
Je deterre un topic. :D

Bon, voilà, j'ai quelques question pour les pros: J'ai installé PHP4.4 et MySQL5.1 sur mon mac pour faire des tests (Forum et CMS) en local.
Je souhaiterais savoir quel droits minimaux je dois donner au(s) compte(s) pour pouvoir installer et faire tourner par exemple SMF et SPIP? Le compte doit-il permettre de pouvoir créer une base, ou seulement des tables?

De plus, question subsidiaire, peut-on faire tourner (et est-ce "sain") par exemple SPIP et SMF sur une même base avec un même compte ou doit-on créer deux bases séparées?

Merci de faire une réponse pas trop jargoneuse, je débute en MySQL et en PHP. ;)
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Amir le 6 Décembre 2006 à 19:50
Bon essayons de faire clair. ;)

1/ Pour les droits utilisateurs, je dirais que normalement il vaut mieux ne pas de donner ce type de droits à un utilisateur utilisé pour se connecter à une base de données (sécurité oblige, on pourrait te supprimer une base ou des tables via cet utilisateur). Après lorsque tu lances le script permettant de créer ta base ou de faire des updates (style plugin), les scripts auront alors besoin de créer une base/des tables, donc avoir des droits spéciaux.
Pour résumer, je ne donnerais ces droits que lorsque tu crées ta base (création de base + création de tables), ou que tu fais des updates qui touchent à la structure de la base (seulement création/modification/suppression de tables). Sinon dans les opérations de tous les jours des droits de ce type ne sont pas utiles et même déconseillés (un utilisateur pouvant faire des select/update/delete est largement suffisant).

2/ Pour spip et smf, je te conseille fortement d'avoir 2 bases dédiées! Ca sera déjà plus lisible, et tu ne risques pas d'avoir des "collisions" de tables (si les 2 applications utilisent une table ayant le même nom).
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Nico le 6 Décembre 2006 à 23:17
Pour la deuxieme question, entierement d'accord avec Ubaj : 1 base par projet distinct :)
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: MCL80 le 7 Décembre 2006 à 19:04
Merci pour ces indications. :jap:

Je vais pouvoir me lancer dans les manips. ^^
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 1er Février 2007 à 10:23
J'ai changé d'hébergement (enfin si on peut appeller ça comme ça, cf news de mon blog sur les scripts du Meikai), et j'ai un problème niveau base de données SQL.

Sur celui-ci, phpmyadmin n'était pas installé d'office, donc je l'ai téléchargé, la dernière version stable, décompressé et uploader sur le ftp.

J'ai ensuite pris le fichier de config, et l'ai complété (mal visiblement), mais comme il ne ressemble plus trop à l'ancien... J'arrive à me connecter à phpmyadmin avec les codes du fichier de config, mais il ne me trouve aucune base de données, je suppose donc que je l'ai indiqué au mauvais endroit...

Voilà à quoi ressemblait l'ancien fichier de config :

Code: [Sélectionner]
<?php
/* $Id: config.inc.php,v 1.28 2000/07/13 13:52:48 tobias Exp $ */

/*
 *  phpMyAdmin Configuration File
 *  All directives are explained in Documentation.html
 */

// The $cfgServers array starts with $cfgServers[1].  Do not use $cfgServers[0].
// You can disable a server config entry by setting host to ''.
$cfgServers[1]['host'] = 'sql2';           // MySQL hostname
$cfgServers[1]['port'] = '';                    // MySQL port - leave blank for default port
$cfgServers[1]['adv_auth'] = false;             // Use advanced authentication?
$cfgServers[1]['stduser'] = '';             // MySQL standard user (only needed with advanced auth)
$cfgServers[1]['stdpass'] = '';                 // MySQL standard password (only needed with advanced auth)
$cfgServers[1]['user'] = 'cpttsuba';                // MySQL user (only needed with basic auth)
$cfgServers[1]['password'] = 'MOTDEPASSE';                // MySQL password (only needed with basic auth)
$cfgServers[1]['only_db'] = 'cpttsuba';                 // If set to a db-name, only this db is accessible
$cfgServers[1]['verbose'] = '';                 // Verbose name for this host - leave blank to show the hostname

$cfgServers[2]['host'] = '';
$cfgServers[2]['port'] = '';
$cfgServers[2]['adv_auth'] = false;
$cfgServers[2]['stduser'] = '';
$cfgServers[2]['stdpass'] = '';
$cfgServers[2]['user'] = '';
$cfgServers[2]['password'] = '';
$cfgServers[2]['only_db'] = '';
$cfgServers[2]['verbose'] = '';

$cfgServers[3]['host'] = '';
$cfgServers[3]['port'] = '';
$cfgServers[3]['adv_auth'] = false;
$cfgServers[3]['stduser'] = '';
$cfgServers[3]['stdpass'] = '';
$cfgServers[3]['user'] = 'root';
$cfgServers[3]['password'] = '';
$cfgServers[3]['only_db'] = '';
$cfgServers[3]['verbose'] = '';

(Le mot de passe était le bon ici, je l'ai juste remplacé pour le copier-coller ^^

Et voilà à quoi ressemble le nouveau :

Code: [Sélectionner]
/*
 * First server
 */
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
$cfg['Servers'][$i]['extension'] = 'mysql';
/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = 'pmausr';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* Advanced phpMyAdmin features */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';

/*
 * End of servers configuration
 */

J'ai donc supposé que :

Code: [Sélectionner]
$cfg['Servers'][$i]['host'] = 'localhost';
=> Serveur SQL

Code: [Sélectionner]
$cfg['Servers'][$i]['controluser'] = 'pmausr';
=> Nom d'utilisateur

Code: [Sélectionner]
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
=> Mot de passe

Code: [Sélectionner]
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
=> Nom de la base de données (?)

Et donc, je lance ensuite la page de PhpMyAdmin, il me demande login/pass, je rentre ceux du fichier config, il me loggue sur la page d'accueil, avec le message, aucune base de données trouvé.

Ou alors, c'est car elle est vide ?

Mais c'est bizarre, car pour la remplir, faut bien qu'il me l'affiche -.-

Et OVH m'a envoyé :
Citation
Votre base MySQL a été installée sur notre serveur.
Et après vérification, elle apparait bien dans leur manager, donc moi, plus rien comprendre là  :wacko:

Posted on: Thursday 01 February, 10:18:29
J'oubliais, OVH me dit aussi :

Code: [Sélectionner]
Version supérieur a 2.2.3 :

$cfg['PmaAbsoluteUri'] = 'http://www.hiei-tf.fr/repertoire de phpMyAdmin/';
 
$i++;
$cfg['Servers'][$i]['host']                   = 'mysql5-2';
$cfg['Servers'][$i]['port']                   = '';
$cfg['Servers'][$i]['socket']                 = '';
$cfg['Servers'][$i]['connect_type']           = 'tcp';
$cfg['Servers'][$i]['controluser']            = '';
$cfg['Servers'][$i]['controlpass']            = '';
$cfg['Servers'][$i]['auth_type']              = 'config';
$cfg['Servers'][$i]['user']                   = 'UTILISATEUR';
$cfg['Servers'][$i]['password']               = 'MOTDEPASSE';
$cfg['Servers'][$i]['only_db']                = 'BDD';
$cfg['Servers'][$i]['verbose']                = '';
$cfg['Servers'][$i]['pmadb']                  = '';
$cfg['Servers'][$i]['bookmarktable']          = '';
$cfg['Servers'][$i]['relation']               = '';
$cfg['Servers'][$i]['table_info']             = '';
$cfg['Servers'][$i]['table_coords']           = '';
$cfg['Servers'][$i]['column_comments']        ='';
$cfg['Servers'][$i]['pdf_pages']              = '';
$cfg['Servers'][$i]['AllowDeny']['order']     = '';
$cfg['Servers'][$i]['AllowDeny']['rules']     = array();

Mais je n'ai ni la première ligne, celle de l'url, ni une entrée 'only_db' dans mon config, donc je ne pige pas là, à moins que je doive les rajouter à la main ? (Ce qui confirmerait que le pmadb n'est pas le bon pour la base de données).

Voilou.

(Je suis en 2.9.2, version stable : phpMyAdmin-2.9.2-all-languages-utf-8-only)


Posted on: Thursday 01 February, 10:22:22
Le forum a l'air de déconner sinon, deux-trois fois que je me tappe ce message :
Citation
Please try again. If you come back to this error screen, report the error to an administrator.
Ou bien "message déjà envoyé alors que ce n'est pas le cas".
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Kianouch le 1er Février 2007 à 10:28
Tu as un serveur dedié ? La BDD est sur ton serveur ?
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 1er Février 2007 à 16:17
OVH.

J'avais OVH avant, et là c'est toujours OVH.

J'ai le nom du serveur sql, l'identifiant, le mot de passe, et le nom de base de données.
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Kianouch le 1er Février 2007 à 16:20
C'est plus une domaine ou une IP qu'un nom qu'il te fait, non ?
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 2 Février 2007 à 00:11
bah, un host quoi, "mysql5-2".

En fait, mon problème n'est pas là, sur l'ancien c'était déjà installé (phpmyadmin) et le fichier config est différent.

Là, dans le tuto, ils disent de remplir des lignes qui n'existent pas dans le fichier config de phpmyadmin, donc je ne pige rien, à moins de les créer à la main ?

Cf mes copiers collers du fichier config de phpmyadmin (l'ancien), le nouveau, et celui de l'exemple d'OVH.

Et c'est toujours le même type d'hébergement, un 60GP (mutualisé).
Citation
Bonjour,
Votre base MySQL a été installée sur notre serveur.

Voici les données techniques:
-----------------------------

 MySQL:
 Serveur        : mysql5-2
 Utilisateur    : BLABLABLA
 Nom de la base : BLABLABLA
 Mot de passe   : XXXXXXXX
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 2 Février 2007 à 08:32
C'est réglé visiblement, oubliez ^^

J'ai pris les lignes de l'exemple, je les ais copier-coller (même si à la base, elles n'étaient pas dans le config), donc je suppose que c'était ce qu'il fallait faire, car phpmyadmin me trouve maintenant une base avec 0 tables.
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 3 Février 2007 à 00:43
J'ai un autre problème  :sweatdrop:

Je n'arrive pas à réinstaller mes compteurs de visite, je suppose que l'installation n'aime pas Mysql5 ou autre ? Car elle foire alors qu'elle fonctionnait avant.

J'ai réinstallé mes forums, voir si la base fonctionnait, et c'est le cas, donc est-ce que quelqu'un ici saurait me "reformuler" ça en commandes SQL à tapper à la main dans PHPMyAdmin pour recréer les tables ?

Je rajoute le fichier d'install à part, en fichier joint.

Edit : Fichier rajouté (j'ai rajouté .txt à la fin, car le forum ne veut pas de .php en fichier joint)

Edit 2 :    
Code: [Sélectionner]
$sql="CREATE TABLE compteur_visite (
compteur double DEFAULT '0' NOT NULL,
date date DEFAULT '0000-00-00' NOT NULL,
time int(9) NOT NULL default '0',
duree int(9) NOT NULL default '0',
ip varchar(50) NOT NULL,
PRIMARY KEY (ip),
KEY compteur (compteur, date),
KEY ip (ip)
)
";
$res=mysql_query($sql, $db);
$sql="INSERT INTO compteur_visite VALUES ('$compteur', '$date', '$time', '$duree', 'compteur')";
$res=mysql_query($sql, $db);
if ($res==1)

Je suppose que tout est là dedans, mais comme je ne connais pas la syntaxe de ce genre de trucs et autres...
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Amir le 3 Février 2007 à 14:14
Tu as vérifié sous phpMyAdmin si la table compteur_visite existe?

Si non tu peux exécuter le script suivant pour la créer :
Code: [Sélectionner]
CREATE TABLE compteur_visite (
compteur double DEFAULT '0' NOT NULL,
date date DEFAULT '0000-00-00' NOT NULL,
time int(9) NOT NULL default '0',
duree int(9) NOT NULL default '0',
ip varchar(50) NOT NULL,
PRIMARY KEY (ip),
KEY compteur (compteur, date),
KEY ip (ip)
)

Sinon ta page php t'affiche un message d'erreur quand tu l'exécutes (peut être simplement dû à la tentative de création d'une table qui existe déjà)?
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 3 Février 2007 à 20:23
C'est justement ce que je voulais, le code pour la créer à la main, car le script d'install ne passe pas, et comme c'est pour changer d'hébergement, la base n'existe pas encore sur le nouveau.

Pour l'install, il plante sans erreur distincte (installation raté, un truc du genre), alors que sur l'ancien il passe bien, je suppose que c'est la différence entre MYSQL 4 & 5 ou un truc du genre.

Je vais tester ça, et je reviens plus tard pour confirmer ou pas si ça roule :)

Merci !
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 4 Février 2007 à 02:27
Code: [Sélectionner]
CREATE TABLE compteur_visite (
compteur double DEFAULT \'0\' NOT NULL,
date date DEFAULT \'0000-00-00\' NOT NULL,
time int(9) NOT NULL default \'0\',
duree int(9) NOT NULL default \'0\',
ip varchar(50) NOT NULL,
PRIMARY KEY (ip),
KEY compteur (compteur, date),
KEY ip (ip)
)

MySQL a répondu:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'0\' NOT NULL,
date date DEFAULT \'0000-00-00\' NOT NULL,
time int(9) NOT N' at line 2

 :wacko:
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 4 Février 2007 à 08:15
L'ancienne en MYSQL 4 ressemble à ça :

Code: [Sélectionner]
-- phpMyAdmin SQL Dump
-- version OVH
-- http://www.phpmyadmin.net
--
-- Serveur: sql2
-- Généré le : Dimanche 04 Février 2007 à 03:31
-- Version du serveur: 4.0.25
-- Version de PHP: 4.4.4
--
-- Base de données: `cpttsuba`
--

-- --------------------------------------------------------

--
-- Structure de la table `compteur_visite`
--

CREATE TABLE `compteur_visite` (
  `compteur` double NOT NULL default '0',
  `date` date NOT NULL default '0000-00-00',
  `time` int(9) NOT NULL default '0',
  `duree` int(9) NOT NULL default '0',
  `ip` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`ip`),
  KEY `compteur` (`compteur`,`date`),
  KEY `ip` (`ip`)
) TYPE=MyISAM;

--
-- Contenu de la table `compteur_visite`
--

INSERT INTO `compteur_visite` (`compteur`, `date`, `time`, `duree`, `ip`) VALUES (153236, '2007-02-04', 1, 24, 'compteur'),
(0, '0000-00-00', 198, 196, '81.241.195.193'),
(0, '0000-00-00', 171, 171, '82.229.139.184'),
(0, '0000-00-00', 184, 169, '82.224.244.129'),
(0, '0000-00-00', 137, 137, '65.54.188.100'),
(0, '0000-00-00', 136, 136, '88.161.157.208'),
(0, '0000-00-00', 57, 57, '82.239.189.194'),
(0, '0000-00-00', 55, 53, '82.66.185.229'),
(0, '0000-00-00', 53, 53, '83.153.94.141'),
(0, '0000-00-00', 51, 50, '90.29.179.199'),
(0, '0000-00-00', 45, 45, '81.57.43.172'),
(0, '0000-00-00', 46, 45, '86.209.161.10'),
(0, '0000-00-00', 39, 39, '81.242.236.51'),
(0, '0000-00-00', 38, 37, '198.165.93.55');

Mais si je colle la première partie dans MYSQL 5, toujours la même erreur =

Code: [Sélectionner]
MySQL a répondu:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0',
  `date` date NOT NULL default '0000-00-00',
  `time` int(9) NOT NULL' at line 2

Posted on: Sunday 04 February, 03:35:27
J'ai aussi des problèmes similaires sur les forums, mais là, vu la taille des bases, convertir tout à la main c'est mort.

On a pas idée de pas continuer à proposer les mêmes version de MYSQL -.-

Il me sort des erreurs sur ce genre de trucs, si j'insère les tables à la main :

Code: [Sélectionner]
INSERT INTO forumygodm_auth_access (group_id, forum_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments, auth_mod) VALUES('3', '5', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1');

Erreur :
Code: [Sélectionner]
INSERT INTO forumygodm_auth_access (group_id, forum_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_attachments, auth_mod) VALUES(\'3\', \'5\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'1\');

MySQL a répondu:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'3\', \'5\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0\', \'0' at line 1

En espérant qu'il y ait un génie du SQL dans le coin  :sweatdrop: (car vu mes recherches, il n'a pas l'air d'exister un logiciel pour convertir automatique une bdd sql au format mysql 5  :bye:)

Edit : Le pire, c'est que PhpBB annonce une compatibilité sans problèmes, mon cul oui  :scrogneugneu:

http://forums.phpbb-fr.com/viewtopic_119261.html?hl=mysql(http://forums.phpbb-fr.com/viewtopic_119261.html?hl=mysql)
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Nico le 4 Février 2007 à 10:31
Normal :D Il y a des \ de trop :)

Code: [Sélectionner]
CREATE TABLE compteur_visite (
compteur double DEFAULT '0' NOT NULL,
date date DEFAULT '0000-00-00' NOT NULL,
time int(9) NOT NULL default '0',
duree int(9) NOT NULL default '0',
ip varchar(50) NOT NULL,
PRIMARY KEY (ip),
KEY compteur (compteur, date),
KEY ip (ip)
)
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 5 Février 2007 à 01:19
Ca ne fonctionne toujours pas malgré ça.

Visiblement, MYSQL rajoute automatiquement les "\", car quand je tappe ça :

Code: [Sélectionner]
CREATE TABLE compteur_visite (
compteur double DEFAULT '0' NOT NULL,
date date DEFAULT '0000-00-00' NOT NULL,
time int(9) NOT NULL default '0',
duree int(9) NOT NULL default '0',
ip varchar(50) NOT NULL,
PRIMARY KEY (ip),
KEY compteur (compteur, date),
KEY ip (ip)
)

Il m'affiche ça au final :

MySQL a répondu:

Code: [Sélectionner]
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'0\' NOT NULL,
date date DEFAULT \'0000-00-00\' NOT NULL,
time int(9) NOT NUL' at line 2

Le problème n'est pas qu'à cette ligne d'ailleurs, si j'efface la ligne "
Code: [Sélectionner]
date date DEFAULT '0000-00-00' NOT NULL,
"

Il m'affiche :

Code: [Sélectionner]
MySQL a répondu:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'0\' NOT NULL,
time int(9) NOT NULL default \'0\',
duree int(9) NOT NULL defa' at line 2
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Nico le 5 Février 2007 à 19:35
c'est forcement les simples quotes qui foutent le bordel : ca marche sur ma base de données.
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Nico le 6 Février 2007 à 19:46
Question concernant MS Access et les macros : est-ce qu'on peut effecteur des requetes SQL directement dans une macro (de la même maniere qu'en php avec mysql_query) ? si c'est le cas, cela signifie qu'on peut jongler avec ce qui sort de cette requete. Jme trompe ?
Titre: Re: SQL , SGBD, Access : manuel du gestionnaire de base de données
Posté par: Hiei- le 6 Février 2007 à 20:57
Citation de Ex-Floodeur le 5 Février 2007 à 19:35
c'est forcement les simples quotes qui foutent le bordel : ca marche sur ma base de données.
Ca marche sur l'ancienne (mysql 4) mais pas sur la nouvelle ici (mysql 5).

C'est bien pour ça que j'avais posté, car ce n'est pas normal :p

Mais bon, ubaj va regarder de toute façon.