Mostrando entradas con la etiqueta MySql. Mostrar todas las entradas
Mostrando entradas con la etiqueta MySql. Mostrar todas las entradas

sábado, 1 de junio de 2013

YII - Conexión a la base de datos MySQL

Por defecto YII utiliza la conexión sqlite, es muy probable que nosotros elijamos otro motor de base de datos para trabajar, en este caso, realizaré la conexión al motor MySQL, para hacer esto debemos abrir el archivo “/protected/config/main.php”, y buscar buscar:





'db'=>array(
    'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
// uncomment the following to use a MySQL database
/*
    'db'=>array(
        'connectionString' => 'mysql:host=localhost;dbname=testdrive',
        'emulatePrepare' => true,
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ),
*/


En donde debemos invertir los papeles, comentaremos lo de sqlite y descomentar lo de MySQL, dejándolo de la siguiente forma:


/*'db'=>array(
    'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),*/
'db'=>array(
    'connectionString' => 'mysql:host=nuestro-host;dbname=nombre-bd',
    'emulatePrepare' => true,
    'username' => 'nuestro-user',
    'password' => 'nuestra-password',
    'charset' => 'utf8',
),

lunes, 23 de abril de 2012

Mysql Workbench - Instalación



MySQL Workbench es una herramienta visual de diseño de bases de datos que integra desarrollo de software, Administración de bases de datos, diseño de bases de datos, creacion y mantenimiento para el sistema de base de datos MySQL. Es el sucesor de DBDesigner 4 de fabFORCE.net, y reemplaza el anterior conjunto de software, MySQL GUI Tools Bundle.

MySQL Workbench permite a un DBA, desarrollador o arquitecto de datos para diseñar visualmente, modelo, generar y gestionar bases de datos. Incluye todo lo que un modelador de datos necesarios para la creación de complejos modelos ER, hacia adelante y la ingeniería inversa, y también ofrece funciones clave para llevar a cabo la gestión del cambio difícil y tareas de documentación que normalmente requieren mucho tiempo y esfuerzo.

Para su instalación debemos:

Instalar las dependencias:
# aptitude install python-pysqlite2 python-paramiko libpangomm-1.4-1 libgtkmm-2.4-1c2a libglibmm-2.4-1c2a libctemplate0 libcairomm-1.0-1 libatkmm-1.6-1
Ahora debemos descarganos MySql Workbench (es necesario registrarse)
http://dev.mysql.com/downloads/workbench/
Una vez descargado, simplemente lo instalamos:
#dpkg -i mysql-workbench-gpl-5.2.38-1ubu1104-i386.deb
Notas:
  • La versión 5.2.38 puede varias.
  • En mi caso baje la versión Ubuntu, pero se puede instalar en Debian.
  • Otra opción es descargar el source code.

domingo, 4 de marzo de 2012

Php - Conexión Mysql con combobox

Para que en un combobox (select llamado en Php) nos muestre elementos basados en una conexión a una base de datos (en este caso Mysql), debemos hacer lo siguiente:

<?php
    function getcombobox(){
     
        $link=mysql_connect(host, user, pass)or die (exit(mysql_error()));
        mysql_select_db(nombredb);
        mysql_query("SET NAMES 'utf8'");
        $sql = "SELECT * FROM nombretabla";
        $result = mysql_query($sql,$link);
        $row = mysql_num_rows($result);
     
        if($row = mysql_fetch_array($result)){
            echo "<select name= nombreselect style='width:176px;'>";
            echo "<option value= '0' selected='selected'>Seleccione</option>";
            do {
                echo "<option value= '".$row[variableid]."'>".$row[‘mostrar’]."</option>";
            }
                while ($row = mysql_fetch_array($result));
                echo "</select>";      
        }
    }
?>
Debemos recordar que todas las palabras en cursiva son las que debemos cambiar por nuestros datos, por ejemplo host, user, pass, nombredb, etc. Este ejemplo es simplemente estático, pero es posible que necesitemos realizar un método que reciba diferentes parámetros y así usarlo más de una vez. El siguiente ejemplo muestra una forma que podemos hacer:

<?php
    function getcombobox($host, $user, $pass, $db, $table, $id, $order, $nameselect, $type,     $showrow){
     
        $link=mysql_connect($host, $user, $pass)or die (exit(mysql_error()));
        mysql_select_db($db);
        mysql_query("SET NAMES 'utf8'");
        $sql = "SELECT * FROM $table order by $order asc";
        $result = mysql_query($sql,$link);
        $row = mysql_num_rows($result);
     
        if($row = mysql_fetch_array($result)){
            echo "<select name= $nameselect style='width:176px;'>";
            echo "<option value= '0' selected='selected'>Seleccione $type</option>";
            do {
                echo "<option value= '".$row[$id]."'>".$row[$showrow]."</option>";
            }
                while ($row = mysql_fetch_array($result));
                echo "</select>";      
        }
    }
?>
En el que las variables son las siguientes:
  • $host: Nombre del host a usar, normalmente es localhost. 
  • $user: Nombre de usuario de la conexión, normalmente es root. 
  • $pass: Contraseña del usuario a conectar, normalmente es vacía, al menos que hayamos indicado lo contrario. 
  • $db: Nombre de la base de datos a la que nos conectamos, debe estar creada. 
  • $table: Nombre de la tabla que queremos obtener los datos, debe estar creada. 
  • $id: es el identificador de la opción del select. 
  • $order: es el orden en el que mostraremos los datos, por ejemplo ordenar por orden alfabético. $nameselect: nombre que obtendrá nuestro select. 
  • $type: Es la variable que nos mostrará como default, por ejemplo “seleccione hardware”, seleccione software”, de esta forma el dialogo no será estático.
  • $showrow: Que es lo que se vera en el select, el id es el identificador, y showrow es lo que se muestra. Por ejemplo id=1 showrow=mouse.
Luego simplemente para mostrarlo debemos llamarlo desde nuestra hoja e incluirlo, por ejemplo:

<?php include('ruta/combobox.php'); ?>
<?php echo getcombobox('host', 'user', 'pass', 'db', 'tabla', 'id', 'orden', 'nameselect', 'tipo', 'showrow'); ?>

jueves, 1 de marzo de 2012

Mysql - Problema caracteres especiales en conexión Mysql

Algunas veces, la verdad no se porque la razón, pero ha pasado, todo funciona perfectamente (acentos, ñ, etc), pero en el momento de realizar una conexión a una base de datos (al menos a Mysql) y estos datos son mostrados, se producen problemas y estos caracteres no son mostrados y nos aparece un rombo con un signo de interrogación. Para resolver el problema debemos hacer lo siguiente:


En primer lugar debemos revisar en el head de nuestro archivo php este lo siguiente:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Quedando algo parecido a esto:
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
Verificando que esté de esta forma, debemos ingresar un header, el header es el siguiente:
header("Content-Type: text/html;charset=utf-8");
Por ejemplo lo podemos dejar de la siguiente forma:
<?php header("Content-Type: text/html;charset=utf-8"); ?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
    </body>
</html>
Finalmente, al crear la conexión Php, debemos agregar:
mysql_query("SET NAMES 'utf8'");
Quedando algo parecido a esto:
mysql_connect('localhost', 'nombreuser','pass')or die (exit(mysql_error()));
mysql_select_db('nombredb');
mysql_query("SET NAMES 'utf8'");

sábado, 25 de febrero de 2012

Mysql - Iniciar sesión

Algo que había pasado por alto es que quizás hayan personas que no sepan como iniciar sesión en mysql a traves de la consola, la verdad es que esto es sumamente sencillo, primero que nada debemos saber si nuestra base de datos esta en nuestro localhost, es decir, en el mismo computador que estamos ocupamos, de ser asi, debemos escribir lo siguiente:
$ mysql -u usuario -p
Al escribir esto, nos pedirá la contraseña del usuario especificado, simplemente la ingresamos y ya estamos dentro de Mysql, en el caso que la nos tengamos que conectar remotamente a Mysql, debemos hacer una especificación más:
$ mysql -h host -u usuario -p
Con esto nuevamente nos pedirá la contraseña del usuario, pero nos permitirá conectarnos remotamente a la base de datos, luego simplemente trabajamos normalmente.

viernes, 24 de febrero de 2012

Mysql - Engines

MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen:




  • MyISAM trata tablas no transaccionales. Proporciona almacenamiento y recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM se soporta en todas las configuraciones MySQL, y es el motor de almacenamiento por defecto a no ser que tenga una configuración distinta a la que viene por defecto con MySQL.
  • El motor de almacenamiento MEMORY proporciona tablas en memoria. El motor de almacenamiento MERGE permite una colección de tablas MyISAM idénticas ser tratadas como una simple tabla. Como MyISAM, los motores de almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se incluyen en MySQL por defecto.
  • Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos sistemas operativos que la soportan. InnoDB también se incluye por defecto en todas las distribuciones binarias de MySQL 5.0 . En distribuciones fuente, puede activar o desactivar estos motores de almacenamiento configurando MySQL a su gusto.
  • El motor de almacenamiento EXAMPLE es un motor de almacenamiento "tonto" que no hace nada. Puede crear tablas con este motor, pero no puede almacenar datos ni recuperarlos. El objetivo es que sirva como ejemplo en el código MySQL para ilustrar cómo escribir un motor de almacenamiento. Como tal, su interés primario es para desarrolladores.
  • NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para implementar tablas que se particionan en varias máquinas. Está disponible en distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento está disponible para Linux, Solaris, y Mac OS X . Añadiremos soporte para este motor de almacenamiento en otras plataformas, incluyendo Windows en próximas versiones.
  • El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades de datos sin índices con una huella muy pequeña.
  • El motor de almacenamiento CSV guarda datos en ficheros de texto usando formato de valores separados por comas.
  • El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Este motor guarda datos en una base de datos remota. En esta versión sólo funciona con MySQL a través de la API MySQL C Client. En futuras versiones, será capaz de conectar con otras fuentes de datos usando otros drivers o métodos de conexión clientes.

Fuente: http://dev.mysql.com/doc/

Mysql - Trabajo simple con Backup

Saber trabajar con backups es sumamente importante, producto que no sabemos en que momento tendremos que respaldar nuestra base de datos o incorporar una base de datos a nuestro sistema. Por suerte existe una forma sencilla de poder realizar esto, aquí explicaré como realizar.



En el caso que estemos logeados con el user de la db y este sin pass en la consola escribimos lo siguiente:
$ mysqldump --opt nombredb > nombrecopiadb.sql
En caso contrario, podemos especificar el usuario y la contraseña de la base de datos de la siguiente manera:
$ mysqldump --opt --user=user --password=clave nombredb > nombrecopiadb.sql
En caso contrario si lo que queremos es restaurar una base de datos con nuestro backup, en primera instancia debemos crear la base de datos, luego de crear la base de datos (teniendola vacia) restauramos su contenido, por ejemplo las tablas.

Al igual que para crear un backup existe una forma para crear sin especificar usuario y contraseña y otra especificando estos campos. Sin especificar estos datos es de la siguiente forma:
$ mysql nombredb < backup.sql
La forma especificando el usuario y la contraseña es la siguiente:
$ mysql --user=user --password=clave mibase < backup.sql
Existen más parámetros que podemos especificar, pero al menos con con esto ya podemos crear un backup y restaurar desde un backup, si queremos saber más, podemos hacer lo siguiente:
$ man mysqldump

martes, 21 de febrero de 2012

Mysql - Crear nuevo usuario

Para crear un nuevo usuario, simplemente entramos a mysql, si queremos entrar como root escribimos:
mysql -u root-p
luego estan en mysql, simplemente escribimos lo siguiente:
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'user_pass';
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'localhost';
FLUSH PRIVILEGES;
Cambiar user_name por nuestro usuario y user_pass por la pass del usuario.
Luego simplemente nos salimos de mysql con el comando "exit", y volvemos a entrar pero con nuestro usuario.
mysql -u user_name -p

Mysql - Resetear contraseña del root

Para realizar esto, lo recomiendo hacer como root, para eso:
$su
[ingresa password]
Luego, paramos el servicio mysql, para eso en la terminal escribimos:
# /etc/init.d/mysqld stop (en distribuciones como debian)
# /etc/rc.d/mysqld stop (en distribuciones como archlinux)
Después de detener el servicio debemos poder entrar a mysql con el usuario root, pero sin su pass, para esto debemos escribir lo siguiente:
# mysqld_safe --skip-grant-tables
Luego abrimos otra terminal (dejamos ejecutando la anterior, e ingresamos a mysql como root
# mysql -u root
Ya estando dentro, lo primero que aremos será utilizar la base de datos mysql, luego actualizar la contraseña del root.
mysql> use mysql;
mysql> update user set password=PASSWORD("nueva_pass") where User='root';
mysql> flush privileges;
mysql> quit
Finalmente, debemos reiniciar el servicio mysqld, lo podrias hacer con restart, pero personalmente, prefiero hacerlo con stop y start.
# /etc/init.d/mysqld stop (en distribuciones como debian)
# /etc/init.d/mysqld start
# /etc/init.d/mysqld stop (en distribuciones como archlinux)
# /etc/init.d/mysqld start
Ahora podemos ingresar como usuario root con
# mysql -u root