Archivo categoría MySQL
Eliminando registros duplicados de una tabla SQL usando DISTINCT ó GROUP BY.
DISTINCT es una palabra clave que usamos e nuestras consultas SQL para eliminar filas duplicadas.
SELECT DISTINCT columna FROM tabla
Ahora bien si queremos eliminar los registros duplicados de una tabla y copiarlos en una nueva podremos hacerlo con la palabra clave DISTICT o la cláusula GROUP BY que suele tener menos BUGS que la primera.
Opción 1: CREATE TABLE nueva_tabla AS SELECT DISTINCT columna FROM tabla; Opcion 2: CREATE TABLE nueva_tabla AS SELECT * FROM tabla GROUP BY (id);
Eliminamos la tabla con los registros duplicados:
DROP TABLE tabla;
Renombramos la nueva tabla por el nombre de la que ya teníamos:
RENAME TABLE tabla_nueva TO tabla;
Como recuperar las claves de sus Bases de Datos de Plesk
Por admin - Administración, Linux, MySQL, Plesk - Jueves, 2 julio 2009
Tan sencillo como realizar esta consulta a la Base de Datos psa de PLESK. Nos devolverá el dominio, nombre de la base de datos, usuario y clave seleccionada. Esta consulta nos listará todas las bases de datos y sus claves pero si queremos filtrarla para un determinado dominio debemos añadir una cláusula WHERE al final de la consulta; (ejemplo: WHERE domains.name=’dominio.com’).
mysql -u admin -p password: ******* mysql> use psa
SELECT data_bases.name AS bd, db_users.login AS usuario, accounts.password AS clave, domains.name AS dominio, data_bases.type AS tipo FROM db_users INNER JOIN data_bases ON (db_users.db_id = data_bases.id) INNER JOIN accounts ON (db_users.account_id = accounts.id) INNER JOIN domains ON (data_bases.dom_id = domains.id) ORDER BY domains.name ASC
* Probado en Fedora Core 5 Plesk 8.6
Shell Script para hacer copias de seguridad de nuestras bases de datos con ncftpput.
Por admin - Administración, Linux, MySQL - Lunes, 15 junio 2009
Pues ya estoy aquí de nuevo para escribir un shell script que realiza una copia de seguridad de nuestras Bases de Datos y mediante ncftpput las enviamos a nuestro servidor FTP.
# DATOS
SERVIDOR=GENTOO-VPS
FECHA=$(date +"%m-%d-%Y") # mm-dd-yyyy
EMAIL=su@email
ASUNTO="Backup SQL"
TMP=/home/backup/tmp
# DATOS BD
BD_USUARIO=root
BD_CLAVE=*******
# DATOS FTP
NCFTP="/usr/bin/ncftpput"
FTP=ftp.dominio.com
FTP_USUARIO=user
FTP_CLAVE=******
FTP_DESTINO="./servidores/$SERVIDOR/MySQL/"
for BD in `mysql -u$BD_USUARIO -p$BD_CLAVE -e "show databases" -B -N`
do
mysqldump -u$BD_USUARIO -p$BD_CLAVE $BD > $TMP/$BD-$FECHA.sql
$NCFTP -m -u $FTP_USUARIO -p $FTP_CLAVE $FTP $FTP_DESTINO/$BD/ $TMP/$BD-$FECHA.sql
rm -f $TMP/$BD-$FECHA.sql
done
mail -s "$ASUNTO - $FECHA - $SERVIDOR" $EMAIL
Para optimizar la tarea podemos incluirla en nuestro crontab e incluimos la siguiente linea con la programación de la tarea y donde está ubicado nuestro script. Se ejecutará a las 2 de la madrugada todos los días:
crontab -e 0 2 * * * /home/backup/backup-bd-diaria.sh
Cambiando una clave MySQL desde SHELL.
# Paramos el servicio de MySQL.
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
# recibimos un mensaje como este:
# mysql # nohup: ignoring input and redirecting stderr to stdout. Starting mysqld daemon with databases from /var/lib/mysql
# Y le indicamos a MySQL que deseamos acceder como usuario root.
mysql -u root
# y recibimos el mensaje de bienvenida a MySQL:
# Welcome to the MySQL monitor. Commands end with ; or \g.
# Your MySQL connection id is 1
# Server version: 5.0.44-log Gentoo Linux mysql-5.0.44-r2
# Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
# Una vez dentro solo tenemos que indicarle la Base de Datos a usar.
mysql>use mysql;
# y posteriormente realizamos el cambio de clave para el usuario seleccionado.
mysql>update user set password=PASSWORD("nueva-clave") where User='root';
mysql>flush privileges;
mysql>quit
# Paramos el servicio y lo volvemos a iniciar.
/etc/init.d/mysql stop
/etc/init.d/mysql start
# Ahora solo debemos comprobar que accede con la nueva clave.
mysql -u root -p
Permitir conexiones remotas a MySQL en Gentoo Linux
Por defecto MySQL solo nos permite realizar conexiones desde nuestro host local, por lo que para permitir conexiones remotas a nuestro servidor de Base de Datos debemos editar el fichero de configuración de MySQL.
vi /etc/mysql/my.cnf
Una vez ahí debemos comentar la linea skip-networking e incluir la IP de nuestro servidor en bind-address.
#skip-networking bind-address = xxx.xxx.xxx.xxx
Una vez hecho esto solo hay que dale permisos al usuario en la tabla users de MySQL.
mysql -u root -p GRANT ALL ON *.* TO usuario@xxx.xxx.xxx.xxx IDENTIFIED BY 'clave';
Reiniciamos MySQL y ya lo tenemos listo.
/etc/init.d/mysql restart
Otra opción es hacerlo directamente desde Webmin haciendo click en servidores -> Servidor de Base de Datos MySQL -> Permisos de Usuario -> Editar el usuario root u otro que deseemos -> y en máquinas cambiar la selección localhost por cualquiera.