====== 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