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;
- Ref: Create Database
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