====== 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: [[http://dev.mysql.com/doc/refman/5.0/en/create-database.html|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: [[http://dev.mysql.com/doc/refman/5.0/en/adding-users.html|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: [[http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html|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