Administración de MySQL: Usuarios, Privilegios y Scripts

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,54 KB

Fechas de Cumpleaños de Animales

Aquí tiene las fechas de cumpleaños de los animales, ordenadas por fecha:

SELECT name, birth FROM pet ORDER BY birth;
+----------+------------+
| name     | birth      |
+----------+------------+
| Buffy    | 1989-05-13 |
| Bowser   | 1989-08-31 |
| Fang     | 1990-08-27 |
| Fluffy   | 1993-02-04 |
| Claws    | 1994-03-17 |
| Slim     | 1996-04-29 |
+----------+------------+

Manejo de Valores NULL

El valor NULL significa valor inexistente o desconocido, y es tratado de forma diferente a otros valores. Para verificar que un valor es NULL, no se pueden emplear operadores de comparación aritmética como =, <, o <>. Intente la siguiente consulta:

SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL     | NULL      | NULL     | NULL     |
+----------+-----------+----------+----------+

Contar Registros

Contar la cantidad total de animales es lo mismo que contar los registros en la tabla pet.

SELECT COUNT(*) FROM pet;
+----------+
| COUNT(*) |
+----------+
| 9        |
+----------+

Para contar animales por propietario:

SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+--------+----------+
| owner  | COUNT(*) |
+--------+----------+
| Benny  | 2        |
| Diane  | 2        |
| Gwen   | 3        |
| Harold | 2        |
+--------+----------+

Ejecución de Scripts en MySQL

MySQL puede ejecutarse en modo por lotes utilizando archivos de script.

Ejecutar un Script

mysql < batch-file

En Windows, si el archivo contiene caracteres problemáticos:

mysql -e "source batch-file"

Con parámetros de conexión:

mysql -h host -u user -p < batch-file

Ventajas de usar Scripts

  • Evitar teclear consultas repetitivas.
  • Crear nuevas consultas a partir de existentes.
  • Facilitar la creación y corrección de consultas complejas.
  • Manejar salidas extensas con paginadores.
  • Guardar la salida en un archivo.
  • Compartir comandos con otros usuarios.
  • Ejecutar consultas en entornos no interactivos (cron).

Sistema de Privilegios en MySQL

Funcionalidad

Autentica usuarios y asigna privilegios en bases de datos (SELECT, INSERT, UPDATE, DELETE).

Funcionamiento

La identidad del usuario se determina por el equipo desde el que se conecta y el nombre de usuario. Los privilegios se otorgan según la identidad y la acción solicitada.

Tablas de Permisos

  • user
  • db
  • host

Columnas

  • Alcance: Host, User, Db
  • Privilegios: Select_priv, Insert_priv, Update_priv, Delete_priv

Gestión de Usuarios

Añadir Nuevos Usuarios

GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

Asignar Contraseñas

mysqladmin -u nombres_usuario -h equipo password "nuevacontr"

SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');

Seguridad de Contraseñas

No otorgar acceso a la tabla mysql.user a cuentas no administrativas. Evitar especificar contraseñas visibles en la línea de comandos.

Límites de Recursos

GRANT ALL ON customer.* TO 'francis'@'localhost' IDENTIFIED BY 'frank' WITH MAX_QUERIES_PER_HOUR 20 MAX_UPDATES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 2;

Copias de Seguridad

mysqldump --tab=/path/to/some/dir --opt db_name

mysqlhotcopy db_name /path/to/some/dir

Archivos de Registro (Logs)

  • Registro de error: Problemas al iniciar, ejecutar o detener mysqld.
  • Registro de consultas: Conexiones y sentencias ejecutadas.
  • Registro de actualizaciones: Sentencias que cambian datos (obsoleto).
  • Registro binario: Sentencias que cambian datos (para replicación).
  • Registro de lentitud: Sentencias lentas o sin índices.

Gestión de Privilegios

Crear Usuario sin Privilegios

GRANT USAGE ON *.* TO anonimo IDENTIFIED BY 'clave';

Conceder Privilegios

GRANT SELECT ON prueba.gente TO anonimo;

Tipos de Privilegios

  • ALL: Todos los privilegios.
  • CREATE: Crear tablas.
  • DELETE: Usar DELETE.
  • DROP: Borrar tablas.
  • INSERT: Insertar datos.
  • UPDATE: Usar UPDATE.

GRANT SELECT, UPDATE ON prueba.gente TO anonimo IDENTIFIED BY 'clave';

Revocar Privilegios

REVOKE SELECT ON prueba.gente FROM anonimo;

Mostrar Privilegios

SHOW GRANTS FOR anonimo;

Eliminar Usuario

REVOKE ALL PRIVILEGES ON *.* FROM anonimo;

DROP USER anonimo;

Entradas relacionadas: