Posts Tagged ‘MySql’

Linux: Connectar MySQL mitjançant un túnel per SSH

diumenge, desembre 1st, 2013

Molta genta empra el PhpMyAdmin o el client mysql des de línia de comandes.

Si teniu un hosting que us permet accès per ssh, però no podeu obrir els ports del tallafocs (firewall) o bé no teniu adreça ip fixa, o voleu transmetre les dades des de / a MySQL encriptades, aquí us deixo aquest truc que de manera senzilla us permetrà fer-ho.

Mireu aquest exemple:

ssh ubuntu@db.codic.cat -L 13306:127.0.0.1:3306 -N

El que fem amb aquesta comanda és connectar-nos al servidor db.codic.cat , on resideix el mysql, per ssh, amb l’usuari ubuntu.

Alhora estem creant un túnel (tunnel) que comunicarà el port 13306 del nostre odinador local amb el host db.codic.cat.

A db.codic.cat es redigirà aquest tunnel cap a localhost (127.0.0.1), port 3306, el port per defecte de MySql.

El mateix procediment de tunnel es pot fer servir per  a saltar a un altre servidor remot també.

Si el servidor funciona amb usuari i mot de pas, se’ns demanarà la contraseya de l’usuari ubuntu, en aquest cas.

Si el servidor funciona amb certificats (key pairs) s’usarà la configuració habitual de ~/.ssh/config

Si voleu forçar l’us d’un certificat podeu fer servir el paràmetre -i /ruta/al/certificat

La connexió s’establirà, la podeu finalitzar amb CTRL + C.

Llavors podeu usar el vostre programa favorit i indicar-li que es connecti a 127.0.0.1 al port 13306, i en realitat la connexió passarà a través del túnel fins al vostre servidor remot.

 

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Veure com anem de connexions a MySql

divendres, setembre 13th, 2013

MySql max_used_connections etc...Podem saber com anem de connexions, i si hi ha hagut problemes preguntant-li al MySQL amb una consulta tan senzilla com aquesta query:

SHOW STATUS LIKE ‘%onn%';

codic-cat-mysql-show-connections-2

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Solució MySql can’t connect

diumenge, juliol 8th, 2012

Aquest article pretén cobrir un dubte recurrent que es fa molta gent que té una màquina virtual al núvol, amb MySql i tot i obrir els port 3306 al tallafocs (firewall) no pot connectar-s’hi remotament.

La solució consisteix a editar l’arxiu:

my.cnf

Normalment ubicat a /etc/mysql/my.cnf

I allà comentar la línia que diu:

bind-address            = 127.0.0.1

Això el que fa és canviar la configuració per defecte de MySql de només escoltar peticions a la ip 127.0.0.1 (localhost), i que el servidor MySql escolti a totes les adreces que la màquina té disponible.

Llavors reiniciem el servidor:

service mysql restart

Una altra cosa que haurem de tenir en compte, és que per a poder connectar al servidor l’usuari amb el que accedir haurà d’estar creat localment, i també amb %.
Això ho fem creant l’usuari de manera local i amb accès des de tot arreu (%) o des de la ip que hagi de poder accedir:

CREATE USER 'carles'@'localhost' IDENTIFIED BY 'CatalunyaTriomfant';
GRANT USAGE ON *.* TO 'carles'@'localhost';
GRANT SELECT, SHOW VIEW, INSERT  ON `projectes`.* TO 'carles'@'localhost';
FLUSH PRIVILEGES;

CREATE USER 'carles'@'%' IDENTIFIED BY 'CatalunyaTriomfant';
GRANT USAGE ON *.* TO 'carles'@'%';
GRANT SELECT, SHOW VIEW, INSERT  ON `projectes`.* TO 'carles'@'%';
FLUSH PRIVILEGES;

Altrament no ens acceptaria consultes des de ip’s remotes.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat MyDebugger 1.2.1.1584

dijous, febrer 3rd, 2011

El proppassat 29 de Gener s’alliberà la versió de MyDebugger 1.2.1.1584.

Aquest programa per a MySQL permet fer un debug de procediments emmagatzemats (stored procedures), funcions i veure variables, establir punts d’aturada (break points), etc.. sense ni tan sols haver d’enregistrar les modificacions per a provar-les.

És una eina imprescindible, que estalvia hores i hores de feina als programadors de MySQL.

El seu cost és d’uns 40 dolars aproximadament però si teniu un bloc i en parleu us regalen la llicència.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Obtenir un MD5 en MySQL

Dimarts, febrer 1st, 2011

Obtenir un MD5 és d’allò més fàcil.

simplement farem:

select MD5('paraula');

On paraula és una frase, paraula, o seguit de números del qual volem obtenir l’ MD5.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Veure els usuaris de MySQL

Dimarts, gener 25th, 2011

Si voleu veure els usuaris de MySQL només heu de fer:

select * from mysql.user;

Si voleu veure tots els camps que conformen les propietats d’un usuari:

desc mysql.user;

Enllaç curt Twitter: http://wp.me/pzeab-1Kb

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Problemes amb les etiquetes i categories

dissabte, gener 1st, 2011

Acabo de descobrir que al bloc s’han reiniciat totes les etiquetes i categories.

Això vol dir que tots els articles han perdut la seva categoria, tot apareix publicat a general, i les seves etiquetes.

Per aquest motiu no apareixen articles relacionats, no funcionen les categories, i si véns de google per categories o etiquetes no trobaràs, cosa que ja ha penalitzat el webranking.

Crec que té a veure amb un bug de la darrera versió de WordPress, la 3.0.4. Estic investigant si només afecta a la versió en Català, no ho crec, o a totes.

Estic reportant-ho a WordPress.

Actualització: Després de revisar el sistema, s’havia quedat pràcticament sense espai en disc. En alliberar espai, la situació s’ha recuperat sola i les Categories i Etiquetes han tornat. Com la incidència ha durat mitja hora, la baixada de visites es deu a la temporada de l’any.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat HeidiSql 6.0

dilluns, novembre 22nd, 2010

El proppassat dia 20 de Novembre s’alliberà la versió 6.0 de HeidiSql, el programari lliure per a gestionar bases de dades MySql.

Aquesta versió presenta la solució de més de 300 errors (bugs), i novetats com la possibilitat d’executar diversos procediments emmagatzemats (stored procedures) en diferents pestanyes (tabs), múltiples connexions amb una sola sessió, resultats de consultes editables, noves funcions de copiar taula amb filtres de WHERE, vista prèvia d’imatges BLOB, una ajuda de SQL millorada, sortida de les cel·les que suporten els formats LaTeX i Wiki entre d’altres millores.

Adreça curta Twitter: http://wp.me/pzeab-1BC

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Problemes de Collation a MySql

dissabte, novembre 6th, 2010

Tot sovint l’ús de diferent collation entre la connexió i la configuració de la base de dades i/o les taules causen un error de collation.

A partir de MySql 4.1.8 podem comprovar quin collation s’està fent servir amb una sentència com aquesta:

SELECT COLLATION(USER()), COLLATION('@');

Podem definir el collation amb el que volem que es defineixin les variables amb SET NAMES:

SET CHARACTER SET 'UTF8';
SET NAMES 'utf8' COLLATE 'utf8_general_ci';

A partir d’aquí les variables de text ja no donaran conflicte amb la base de dades ut8_general_ci puix que hem indicat que es treballi amb aquest format.

Per exemple:

SET @s_email='email@codic.cat';
SELECT * FROM correus WHERE correu_usuari=@s_email;

Ja no donaria un error com:
#1267 – Illegal mix of collations (latin1_swedish_ci,IMPLICIT)
and (utf8_general_ci,COERCIBLE) for operation ‘=’

Més informació: http://dev.mysql.com/doc/refman/4.1/en/charset-collation-charset.html

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Sql per a cercar dins de procediments emmagatzemats (stored procedures), funcions…

dimecres, octubre 27th, 2010

Un amic m’ha passat aquesta consulta per a MySql que permet buscar dins el codi dels procediments emmagatzemats i funcions de Mysql.

SELECT ROUTINE_NAME, ROUTINE_SCHEMA, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%text%'
ORDER BY ROUTINE_NAME

La consulta Sql és realment ràpida i per a res satura el servidor MySql, per molt que hi hagi moltes taules, grans, i moltes funcions i procediments, però si encara la voleu fer córrer més ràpid la podeu acotar per routine_schema.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat MyDebugger 1.2.1.1579

dilluns, octubre 18th, 2010

El proppassat 8 d’Octubre fou alliberada la versió 1.2.1.1579 d’aquest debugger de procediments emmagatzemats (stored procedures) i funcions de MySql.

El podeu descarregar i provar durant 30 dies de manera gratuïta al seu web: http://mydebugger.com/

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Crear un procediment emmagatzemat en MySql que retorni paràmetres

Dimarts, agost 3rd, 2010

Els procediments emmagatzemats (stored procedures) poden tenir paràmetres d’entrada IN i paràmetres de sortida OUT.

Per a definir aquest procediment empraríem un codi SQL com ara aquest:

CREATE PROCEDURE `codic_envia_mail`(IN `S_PLANTILLA` VARCHAR(50), IN `I_USUARI` INT, IN `S_TIPUS` VARCHAR(5), IN `I_CODI` INT, IN `S_PARAM1` VARCHAR(50), IN `S_PARAM2` VARCHAR(50), IN `S_PARAM3` VARCHAR(50), OUT `I_MAILPK` INT)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN

Els paràmetres d’entrada són les dades que li passem al procediment, i els paràmetres de sortida són els que ens permeten recuperar amb una altra comanda SELECT les dades que ha preparat el procediment.

En la imatge superior es passen 7 paràmetres d’entrada i un de sortida @I_MAILPK.

A nivell de codi PHP i ZendDb cridaríem el procediment i recuperaríem la variable de sortida amb un codi similar a aquest:

$s_variable_de_sortida = '@I_MAILPK';
try {
    $o_sel=dbHandler::getAdapter()
    ->query("CALL codic_envia_plantilla('{$s_plantilla}', {$i_usuari}, '{$s_tipus}', {$i_codi}, '{$s_parametre1}', '{$s_parametre2}', '{$s_parametre3}', {$s_variable_de_sortida})");
    // Recuperar la variable de sortida. Pe: @I_MAILPK
    $o_sel2=dbHandler::getAdapter()
        ->query("SELECT {$s_variable_de_sortida}");
    // Nota: Encara millor si feu servir la substitució amb ? ja que llavors és ZendDb qui filtra possibles caracters problemàtics
    $o_sql = "CALL codic_envia_plantilla(?, ?, ?, ?, ?, ?, ?, {$s_variable_de_sortida})";
    $o_sel=dbHandler::getAdapter()
	-->query($s_sql, array($s_plantilla, $i_usuari, $s_tipus, $i_codi, $s_parametre1, $s_parametre2, $s_parametre3));

    // Recuperar la variable de sortida. Pe: @I_MAILPK
    $o_sel2=dbHandler::getAdapter()
        ->query("SELECT {$s_variable_de_sortida}");

    if ($o_sel2->rowCount() > 0){
        $st_dades = $o_sel2->fetch();
        $i_resultat = $st_dades[$s_variable_de_sortida];
        return true;    // S'ha executat bé, sortim de la funció retornant true
    }
    else
    {
        // El procediment no ha retornat cap valor dins la variable
        // així que no ha anat bé
        return false;
    }
} catch (Exception $e) {
    // Hi ha hagut una excepció (Exception)
    throw new Exception('Excepció enviant el correu: '.$e->getMessage());
}

Els prefixes $s_ $i_ ens indiquen quin tipus de variable és:

$s_ string, cadena de caracters
$i_ integer, número sencer
$b_ boolean, valor booleà true/false >0 o 0/null/blanc
$st_ structure, estructura, com ara un array
$o_ object, objecte per exemple de base de dades

La variable de sortida a MySql porta l’ensaïmada o arrova davant.
Podem utilitzar altres notacions com $r_ per als arrays, etc.. però és important de cara a la llegibilitat del nostre codi sempre emprar la mateixa notació.
Emprar aquests prefixes ens estalviarà errors de programació, per exemple sumar cadenes amb números.

Un exemple de programació sense ZendDb i dos paràmetres de sortida:

mysql_query = "call sp_GetUsers('ProjectName',@ErrorNumber, @ErrorMessage)";
$result = mysql_query('select @ErrorNumber, @ErrorMessage');
$row = mysql_fetch_assoc($result);
print_r($row);

Com veieu sense indicar els prefixes resulta força menys intuitiu.

Per a més exemple de crides IN/OUT sense ZendDb podeu veure:

http://www.herongyang.com/jdbc/MySQL-CallableStatement-Procedure-Parameters.html

http://www.tek-tips.com/viewthread.cfm?qid=1441148&page=10

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

MyDebugger – Un depurador de procediments emmagatzemats (stored procedures) per a MySql

dimecres, juliol 28th, 2010

Hi ha eines imprescindibles.

MyDebugger és una d’elles si programem procediments emmagatzemats (stored procedures).

MyDebugger ens permet:

– analitzar un procediment emmagatzemat línia per línia

– avaluar variables en temps real

– saltar al punt on és el cursor

– executar els procediments sense haver-los de guardar a la base de dades

– passar paràmetres comodament

Aquesta mena de funcionalitats que un depurador de progració en C, .NET, Visual Basic o d’altres llenguatges, ens ofereix.

Aquesta eina és de pagament, però els $49 (uns 35 €) se’ls val de sobra.

Amb el primer procediment emmagatzemat en que estalvies hores de provar a cegues t’adones que són ben invertits.

Es pot fer servir durant 14 dies de prova, de manera que la inversió encara és més segura.

Es troba disponible per a windows, i per a Linux emprant Wine.

El podeu descarregar de:

http://www.mydebugger.com/download.php

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Solució error MySql 1064 creant un procediment emmagatzemat (stored procedure)

divendres, juny 25th, 2010

L’error 1064 quan creem un procediment emmagatzemat és bastant molest i difícil de descobrir-ne el perquè puix que apunta la primera línia de codi, i aquesta no té cap error.

/* SQL Error (1064): 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 ” at line 8 */

Aquest error és degut simplement a que MySql considera que on hi ha el punt i coma ; acaba la sentència.

Per tant es fa un embolic creient que acaba el procediment emmagatzemat (stored procedure).

La solució és tan simple com emprar DELIMITER.

Emprant davant de tot:

DELIMITER //

i al final:

END//
DELIMITER ;

(pareu atenció a que no hi hagi un espai entre END i //)

S’acaba el problema.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat HeidiSql 5.1.0.3372

divendres, juny 4th, 2010

Ahir es va alliberar la nova versió de HeidiSQL, la 5.1.0.3372.

Aquesta nova versió soluciona alguns errors (bugs) i presenta noves funcionalitats.

Podem editar valors de la graella de resultats d’una select, i també podem executar diverses consultes des del mateix quadre d’sql de cop, i s’obren cadascuna en una pestanya (tab).

Properament això s’implementarà també per als procediments emmagatzemats (stored procedures).

Una altra funcionalitat interessant és que a baix s’ofereixen unes quantes estadístiques de rendiment del servidor.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy