====== MySQL ======
===== Conectar =====
mysql -h HOST -u USUARIO -p PASSWORD
===== Ver y usar bases de datos: =====
show databases;
use BD;
===== Ver tablas: =====
show tables;
describe TABLA;
===== Ver y eliminar usuarios =====
SELECT User, Host FROM mysql.user;
DROP USER 'nombre_usuario'@'localhost';
===== Ver configuración =====
status
show variables;
show variables like '%max%';
===== Crear b.d. (como root): =====
create database qrevisa;
grant all on qrevisa.* TO data@localhost;
grant all on qrevisa.* to wwwrun@localhost;
create database wordpress;
grant all on wordpress.* to 'wordpress_user'@'localhost' identified by 'XXXXX';
flush privileges;
===== Volcado del schema =====
mysqldump -u xxxx -p xxxx --no-data -d BASEDATOS >dump.sql
===== Generar SQL para borrar todas las tablas =====
mysqldump -u xxxx -p xxxx --add-drop-table --no-data -d BASEDATOS |grep ^DROP >borrado.sql
===== A vueltas con el ENGINE de las tablas (MyISAM o InnoDB) =====
show create table TABLA;
SELECT table_schema,TABLE_NAME, ENGINE FROM information_schema.TABLES;
ALTER TABLE TABLA ENGINE = InnoDB;
===== Change mysql prompt to be more verbose TEST =====
export MYSQL_PS1="mysql://\u@\h:/\d - \R:\m:\s > "
===== Execute MySQL query send results from stdout to CSV =====
mysql -umysqlusername -pmysqlpass databsename -B \
-e "select * from \''tabalename\'';" | \
sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > mysql_exported_table.csv
===== Backup all MySQL Databases to individual files =====
mysql -e 'show databases' | sed -n '2,$p' | xargs -I DB 'mysqldump DB > DB.sql'
===== Analyze, check, auto-repair and optimize Mysql Database =====
mysqlcheck -a --auto-repair -c -o -uroot -p [DB]
===== Create a backup copy of a MySQL database on the same host =====
mysqldump OLD_DB | cat <(echo "CREATE DATABASE NEW_DB; USE NEW_DB;") - | mysql
===== Import SQL into MySQL with a progress meter =====
(pv -n ~/database.sql | mysql -u root -pPASSWORD -D database_name) 2>&1
===== Progress bar for MySQL import =====
pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME
===== Mostrar texto =====
SELECT '' AS ' ';
===== Grabar consulta en un fichero =====
En un fichero de texto, usando TAB como separador
SELECT order_id,product_name,qty
FROM orders
INTO OUTFILE '/tmp/orders.txt'
En un fichero CSV (con puntos y comas)
SELECT order_id,product_name,qty
FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Alternativa cuando mysql no tiene permiso FILE (lo anterior da error)
echo 'select * from sometable into outfile' | mysql -p -u someuser somedatabase > /tmp/output
Grabar toda la sesion en un fichero
tee session.out
===== Convertir Base de datos de latin1 a utf8 =====
mysqldump -u qrevisa --password=xxxxxx --opt --quote-names --skip-set-charset --default-character-set=latin1 qrevisa >dump.sql
mysql --database=dbname 'ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_spanish_ci;'
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;
mysql --database=dbname -B -N -e "SHOW TABLES" | \
awk '{print "ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;"}' | \
mysql --database=dbname &
mysql --default-character-set=utf8