MySQL

Crear base datos, usuario y permisos

Crear database

Para la creación de nuevas bases de datos usar la órden

CREATE DATABASE nombre_db

Para evitar error de DB existente:

CREATE DATABASE IF NOT EXISTS nombre_db

Para pasar más datos a la DB a crear con un tipo específico de codificación:

CREATE DATABASE nombre_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

Crear usuario

Para crear un usuario y asignarle permisos a una base de datos (nombre_db) se debe:

GRANT ALL PRIVILEGES ON nombre_db.* TO 'usuario'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Cambiar clave de Usuario

Usar la base de datos mysql

mysql> use mysql;

Cambiar clave:

SET PASSWORD FOR 'user-name-here'@'hostname-name-here' = PASSWORD('new-password-here');

O también:

UPDATE mysql.user SET Password=PASSWORD('new-password-here') \
  WHERE User='user-name-here' AND Host='host-name-here';

Confirmación de cambio:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Reset clave root

Detener servicio mysql y reiniciarlo con:

$ mysqld --skip-grant-tables --user=root &

Conectarse al mysql con:

$ mysql -u root

Cambiar la clave de root con:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
FLUSH PRIVILEGES;

Apagar el mysql y reiniciarlo en forma normal.

Respaldar y recuperar Mysql

Para respaldar mysql completo usar:

$ mysqldump --user=root --password=[passwd] \
   --lock-all-tables --all-databases \
   | gzip -9 > backup-$(date +%F).sql.gz

Para recuperar:

$ zcat backup-20090730.sql.gz | mysql -u root -p

Reparar tabla

MySQL Table is marked as crashed and last (automatic?) repair failed:

$ myisamchk -r -v -f --sort_buffer_size=128M \
  --key_buffer_size=128M /var/lib/mysql/database/table.MYI