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;