Connection en ADODB sur MYSQL via ASP
- Par: serveurblog
- Le: 16.02.2010 10:02:16
- Dans: Mysql
- Commentaires: 0
dim cnx
dim l_base
dim sServerName, sDatabase, sUserName, SPassword
' si déjà connecté alors on récupère la session
If not IsObject(Session("cnx")) Then
Set cnx = Server.CreateObject("ADODB.Connection")
sServerName="192.168.0.3"
sDatabase="mabase"
sUserName="toto"
SPassword="123456"
l_base = "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=" & sServerName & "; PORT=3306;"
l_base = l_base & "DATABASE=" & sDatabase & "; USER=" & sUserName & "; OPTION=3; Stmt=;"
l_base = l_base & "PASSWORD=" & SPassword & ";"
cnx.open l_base
Set Session("cnx") = cnx
else
Set cnx = Session("cnx")
end if
Reinitialiser le password ROOT de mysql
- Par: serveurblog
- Le: 28.01.2010 11:22:21
- Dans: Mysql
- Commentaires: 0
Source : http://www.wampserver.com/phorum/read.php?1,49856
- Réinitialisation du mot de passe root MySQL sous Windows
- Création d'un utilisateur avec tous les privilèges
Malgré toutes les opérations que vous avez effectuées, vous n'arrivez plus à vous connecter à MySQL (et PhpMyAdmin) en tant que root@localhost, avec ou sans mot de passe ou vous avez oublié votre mot de passe ou, par inadvertance, vous avez supprimé tous les utilisateurs.
La procédure ci-dessous vous permettra de mettre un autre mot de passe pour tous les comptes root ou de créer un utilisateur avec tous les privilèges et sans mot de passe.
Connecter une base Mysql a un script ASP ou VBS
- Par: serveurblog
- Le: 17.11.2009 23:28:26
- Dans: Mysql
- Commentaires: 0
Voici la syntaxe :
Set cnx = CreateObject("ADODB.Connection")
sServerName= "ip_du_serveur_mysql"
sDatabase="nom_de_la_base"
sUserName="cuser"
SPassword="password"
l_base = "Driver={MySQL ODBC 5.1 Driver};" & "Server=" & sServerName & ";Port=3306;"
l_base = l_base & "Database=" & sDatabase & ";"
l_base = l_base & "User=" & sUserName & ";Password=" & SPassword & "; Option=3;"
cnx.open l_base
sql="select * from table"
Set rs = CreateObject("ADODB.Recordset")
rs.CursorLocation = 3 ' adUseClient 2: useserver
rs.Open sql, cnx, 3, 3
if rs.recordcount > 0 then
msgbox ("cnxok " & rs.fields("CodeUser"))
end if
rs.close
set rs = nothing
Perte du mot de passe MYSQL sous Windows
- Par: serveurblog
- Le: 11.05.2009 10:34:06
- Dans: Mysql
La siuation habituelle : vous avez perdu le mot de passe root de mysql .
Que faire ? c'est tres simple :
Stoppez Mysql
Ouvrez une fenêtre de commande
tapez
mysqld.exe --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file="C:\Program Files\MySQL\MySQL Server 5.0\a.txt" --console
( a.txt est un fichier texte contenant :
UPDATE mysql.user SET Password = PASSWORD ('secret') WHERE User = 'root';
FLUSH PRIVILEGES;
GROUP_CONCAT et son utilisation
GROUP_CONCAT est une fonction d'agrégation (comme COUNT, MAX, etc.) permettant de concaténer tous les enregistrements des groupes définis par la clause GROUP BY.En d'autres termes, GROUP_CONCAT est à CONCAT ce que SUM est à l'opérateur +.
Exemple :
CREATE TABLE groupe utilisateur (
ID_GROUPE INT AUTO_INCREMENT NOT NULL,
LIBELLE_GROUPE VARCHAR(50),
PRIMARY KEY (ID_GROUPE)
);
CREATE TABLE utilisateur (
ID_USER INT AUTO_INCREMENT NOT NULL,
NOM_USER VARCHAR(50) NOT NULL,
ID_GROUPE INT NOT NULL,
PRIMARY KEY (ID_USER),
FOREIGN KEY (ID_GROUPE) REFERENCES groupe_utilisateur (ID_GROUPE)
);
INSERT INTO groupe_utilisateur (LIBELLE_GROUPE) VALUES
('utilisateurs'), ('administrateurs');
INSERT INTO utilisateur (NOM_USER, ID_GROUPE) VALUES
('bob', 1), ('toto', 1), ('bibi', 1), ('superuser', 2), ('directeur', 2);
Utilisation de la fonction GROUP_CONCAT (avec ses deux options SEPARATOR et ORDER BY) :
SELECT LIBELLE_GROUPE, GROUP_CONCAT(NOM_USER SEPARATOR ":" ORDER BY NOM_USER) AS LIST_USERS
FROM utilisateur
INNER JOIN groupe_utilisateur USING (ID_GROUPE)
GROUP BY (utilisateur.ID_GROUPE)
Le système de cache de MySQL
Il y a généralement une question que l’on se pose lorsqu’on étudie MySQL. Le principe de fonctionnement du cache MySQL et son utilisation.Commençons par noter que le cache de MySQL est un endroit mémoire qu'utilise MySQL pour stocker de côté les résultats de certaines requêtes SQL. Ainsi, si une requête mise en cache est redemandée au serveur, celui-ci n'aura pas besoin d'aller interroger les tables et pourra renvoyer le résultat directement depuis le cache. Ceci permet d’obtenir un gain de vitesse très élevé.
Comment l'activer ?
Normalement, le cache est activé par défaut. Nous devons tout simplement vérifier s’il est déjà activé en tapant ceci :
SHOW VARIABLES LIKE 'have_query_cache';
Si la réponse est "YES", ça veut dire que le système de cache est disponible. Mais cela ne veut pas dire qu'il soit actif, nuance ! Pour savoir son état, interroger la variable 'query_cache_size' :
SHOW VARIABLES LIKE 'query_cache_size'
Sauvegarde massive
En dehors de phpMyAdmin qui est pratique pour faire un export d'une base (en vue d'en faire une sauvegarde), MySQL propose, aussi un outil accessible en ligne de commande, tout aussi pratique :mysqldump.
En effet pour faire un back up de 'ma_base', il suffit de saisir la commande suivante:
mysqldump -u username -p ma_base > ma_base.sql
Notez la redirection du flux de sortie vers le fichier 'ma_base.sql'. Après saisie de votre password, votre dump sera donc redirigé vers ce fichier.
Cet outil propose de nombreuses options. L'une d'elles s'avère très utile afin de backuper, non pas une base en particulier, mais l'ensemble des bases.
mysqldump -u username -p --all-databases > big_dump.sql
Ainsi, en une seule ligne de commande, il est possible d'obtenir un dump structure et données de l'ensemble de ses bases. Cette tâche peut-être automatisée, par exemple, via l'ajout d'une entrée dans la crontab.
Compter le nombre d'entrées
Nous allons voir comment demander à MySQL le nombre d'entrées dans une table. C’est quelque chose qui vous sera d’une très grande utilité car cela vous permettra de dire par exemple : Il y a 16 logos en vente actuellement !Pour ce faire, nous allons exécuter la requête suivante :
Code : PHP
<?php
mysql_connect("localhost", "moi796", "mot_de_passe");
mysql_select_db("coursphp");
// Combien d'entrées dans logos?
$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM logos");
$donnees = mysql_fetch_array($retour);
?>
Il y a <?php echo $donnees['nbre_entrees']; ?> Logos en vente !
<?php
mysql_close(); // Déconnexion de MySQL
?>
Vous remarquez que la requête est un peu différente. Le mot-clé COUNT demande à MySQL de compter le nombre d'entrées, et de renvoyer le résultat dans l'array $donnees['nbre_entrees'].
On ne fait pas de boucle, il n'y en a pas besoin. MySQL a juste renvoyé le nombre de Logos inscrits dans la table.
Bien entendu, vous pouvez rajouter à la fin de la requête un WHERE, par exemple pour avoir juste le nombre de logos appartenant à une personne précise!
Créer la database sur MySQL avec WinDev
Lors de la connexion avec l'accès natif, il faut préciser le nom de la base. Il est donc nécessaire d'utiliser PHPMyAdmin ou SQLylog pour créer la base.La fonction SQLConnecte permet d'effectuer ce traitement si on utilise la connexion ODBC.
Voici le code permettant de créer la database :
id est un entier = SQLConnecte("MysqlODBC","root","mdp","","ODBC ",hODBC)
SI id <> 0 ALORS
sNomDatabase est une chaîne = "Database"
// création de la base de données
sSql est une chaîne = "CREATE DATABASE IF NOT EXISTS %1"
sSql = ChaîneConstruit(ssql,sNomDatabase)
// execution de la requête
SI PAS SQLExec(ssql,"REQ") ALORS
SQLInfoGene()
Erreur("La Database n'a pas pu être créée. Code erreur : " + SQL.Erreur +RC+...
SQL.MesErreur)
FIN
Exécuter une requête de façon aléatoire
Vous souhaitez sélectionner une donnée au hasard dans une table Mysql.
Voici le script que vous devez utiliser :
$requete = "SELECT COUNT (nom_du_champ) AS Cpt FROM nom_de_la_table"; // on peut rajouter une clause WHERE
$query = mysql_query ($requete); // on effectue la requete
$array = mysql_fetch_array ($query);
$nb=$array['Cpt']; // On donne le nombre d'enregistrements à la variable "nb"
$nb=$nb-1; // on soustrait un puisque la clause « limit » commence à 0 et non 1
$donne_hasard=rand(0,$nb); // on sélectionne une donnée au hasard
// NB - Si vous utilisez une clause WHERE ci-haut indiquer la même ci-dessous
$recup = "SELECT * FROM vrgpub LIMIT $donne_hasard,1"; // on sélectionne la donnée choisie aléatoirement
$envoi = mysql_query ($recup);
while($tableau = mysql_fetch_array($envoi))
{
$nom_de_la_variable = $tableau['nom_du_champ'];
// on sélectionne les valeurs de la donnée
}