Great summary of sql join types:
Source: https://stevestedman.com/
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
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
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)
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
The easy way:
BackUp:
$ mysqldump -u [username] -p [password] [databasename] > [backupfile.sql]
Restore:
$ mysql -u [username] -p [password] [database_to_restore] < [backupfile.sql]
Haciendolo facil:
sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server php5-mysql
sudo service apache2 restart
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 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.
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