MySQL

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;

* Ref: Adding users

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

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.

* Ref: Resetting permissions

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

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