Tabla de Contenidos

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:

Mysql 8.0

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

Mysql 5.7

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

* Ref: Adding users

Cambiar clave de Usuario

Mysql 8.0

Cuando tiene que utilizar una clave con el sistema anterior:

  ALTER USER 'usuario'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Mysql 5.7

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.

* Ref: Resetting permissions

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

Login command line sin password

 $ mysql_config_editor set \
   --login-path=staging \
   --host=mysql.staging.example.com \
   --user=example \
   --password
 Enter password:
 cat .mylogin.cnf
 $ mysql --login-path=staging

:wq