Importar Base de Datos MySQL desde archivos de datos / Import MySQL Database from Data Files


Puede suceder que no podamos acceder a una base de datos MySQL porque no tenemos acceso por sistema operativo como para hacer un mysqldump.

Comunmente se rompe un disco, y el sistema ya no bootea, pero podemos acceder a algunos archivos del disco colocándolo como esclavo.

Ante esta situación, podremos colocar nuevamente la base de datos en funcionamiento copiando los archivos de datos de la base de datos en el directorio que utiliza mysql.

1) Detenemos el motor

# service mysqld stop

2) Copiamos los archivos de datos de la base de datos al directorio del motor

# cp -r /tmp/dbcafe /var/lib/mysql

3) Reasignamos los permisos

# chown -R mysql:mysql /var/lib/mysql/dbcafe/

4) Iniciamos nuevamente el motor

# service mysqld start

 

MySQL: resetting root password


Dato muy interesante para cuando perdemos la password de root de una base de datos MySQL (gracias Cameron):

1) Detenemos el servicio mysqld y restarteamos con la opción –skip-grant-tables. Opcionalmente podemos añadir la opción –skip-networking para evitar la conección de clientes remotos.

# service mysqld stop
# mysqld_safe --skip-grant-tables&

2) Conectamos al servidor por consola:

# mysql

3) Ejecutamos la siguiente sentencia:

mysql> update mysql.user set password=PASSWORD('nuevapassword') where user='root';
mysql> flush privileges;

La sentencia flush le dice al servidor que vuelva a cargar en memoria las grant tables a fin de notificarse del cambio de password.

Luego detenemos el servicio y lo volvemos a inciar normalmente.

# service mysqld stop
# service mysql start

 

mysql: reparar tabla por consola / repair table from command line


Para checkear o reparar tablas de mysql por consola, debemos primero ingresar a la base de datos en cuestión:

[factura@localhost ~]$ mysql -uusuario -ppassusuario
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.37 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use dbclientes;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Luego, podemos hacer un check sobre una tabla específica:

mysql> check table temp_ventas;
+------------------+-------+----------+------------------------------------------------------------------------+
| Table            | Op    | Msg_type | Msg_text                                                               |
+------------------+-------+----------+------------------------------------------------------------------------+
| temp_ventas      | check | error    | Table 'temp_ventas' is marked as crashed and should be repaired        | 
+------------------+-------+----------+------------------------------------------------------------------------+
1 row in set (0.00 sec)

y con un resultado como este, realizar un repair:

mysql> repair table temp_ventas;
+------------------+--------+----------+--------------------------------------+
| Table            | Op     | Msg_type | Msg_text                             |
+------------------+--------+----------+--------------------------------------+
|      temp_ventas | repair | warning  | Number of rows changed from 13 to 14 | 
|      temp_ventas | repair | status   | OK                                   | 
+------------------+--------+----------+--------------------------------------+
2 rows in set (0.03 sec)

Cambiar Autoincremento en tabla de Mysql / How to change Auto Increment counter


Seguramente nos ha pasado mas de una vez que ante un corte imprevisto de energía, algunas tablas que tienen definida una clave con autoincremento, al almacenar el ultimo valor, no cambió el contador de autoincremento en la definición de la tabla. Por lo tanto, al intentar grabar un registro nuevo, nos da error de clave duplicada.

Podemos solucionar esto por consola:

Primero veamos cual es el maximo valor almacenado de la clave en dicha tabla:

mysql> select max(id) from movimientos;
+------------------------+
| max(id) |
+------------------------+
|                 116907 |
+------------------------+
1 row in set (0.00 sec)

Luego hacemos un solemne ALTER sumando 1 al resultado de la consulta anterior:

mysql> alter table movimientos AUTO_INCREMENT=116908;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

 

SQL: How to combine multiple rows into one string


Spanish Version

The problem:

We may have several records belonging to a column or field that we want to concatenate and display in a single string. Something like this:

description
===========
value1
value2
value3

and we want to get something like this:

value1, value2, value3

that is, as if we had to transpose the column, but without complicating ourselves.

The solution is:

DECLARE @values VARCHAR(1000)
SELECT @values= COALESCE(@values + ', ', '') + description FROM folders
select @values as values

The magic is done by the COALESCE command that returns the expression that does not contain the NULL value among its arguments.

NOTE: This solution is valid only if no row is NULL.

OpenUpload: Instalando tu propio servidor de descargas


OpenUpload es ideal para tener en tu propio servidor toda la funcionalidad de un servidor de descargas similar a YouSenIt, MegaUpload or RapidShare.

La instalación es bastante simple en Fedora/CentOS/RedHat:

1) descargamos el paquete de instalación desde sourceforge.

2) decomprimimos y copiamos a nuestro www:

# tar -zxvf openupload-0.4.2.tar.gz
# mv openupload-0.4.2 /var/www/html/openupload

3) Editamos la configuración de nuestro archivo config.inc.php.sample:

vi /var/www/html/openupload/www/config.inc.php.sample

Modificando basicamente las siguiente entradas:

/* Define the installation folder */
$CONFIG['INSTALL_ROOT']='/var/www/html/openupload';

/* define http:// address */
$CONFIG['WWW_SERVER']='http://www.hvivani.com.ar';
/* define the additional web path i.e. /openupload */
$CONFIG['WWW_ROOT']='/openupload/www';

/* Detail for dbconnection */
$CONFIG['database']['host']='localhost';
$CONFIG['database']['user']='useropenupload';
$CONFIG['database']['password']='passopenupload';
$CONFIG['database']['name']='openupload';

Guardamos la configuración en este archivo y lo renombramos:

mv /var/www/html/openupload/www/config.inc.php.example /var/www/html/openupload/www/config.inc.php

4) Ahora configuramos la base de datos, recordando que php-mysql tiene que estar instalado.

# mysql -uroot
create database openupload;
grant all privileges on openupload.* to openupload@localhost ideintified by 'passopenupload';

Importamos los esquemas configurando el servidor para uso privado:

mysql openupload -u openupload -p passopenupload< sql/mysql/1_structure.sql
mysql openupload -u openupload -p passopenupload< sql/mysql/2_base.sql
mysql openupload -u openupload -p passopenupload< sql/mysql/3_mode_private.sql

En este paso, para otros modos de uso como público, restringido u otros importamos la estructura de base de datos que corresponda en vez del 3_mode_restricted.

Con esto ya estamos listos para apuntar nuestro navegador a http://localhost/openuploade ingresar con usuario admin, passwd admin.

Aquí tenemos los archivos para agregar el idioma español que no viene por default.

MySql change root password


Es importante establecer la password de root de mysql antes de comenzar a utilizar el este motor de base de datos, mas aún si se va a utilizar para almacenar información de sitios web.

Para establecer la password de root de un servidor mysql, podemos hacerlo por consola con el siguiente comando:

$ mysqladmin -u root password XXXXX

Ahora, si lo que queremos es cambiar la password de root del mysql:

$ mysqladmin -u root -p'viejapassword' password newpassword

De la misma manera podemos cambiar la  password de root para otros usuarios:

$ mysqladmin -u hernan -p viejapassword password newpassword