Você está na página 1de 21

Rodrguez Contreras Isi Nieto Ramrez Dhalma Guadalupe

Equipo 10

SEGURIDAD EN MYSQL
1.- Seguridad
Los factores generales que afectan a la seguridad. Estos incluyen la eleccin de una buena contrasea, que no conceda privilegios innecesarios a los usuarios Seguridad de la propia instalacin. Los archivos de datos, archivos de registro y los archivos de todas las aplicaciones de su instalacin debe ser protegido para asegurar que no se pueden leer o escribir por personas no autorizadas Control de acceso y seguridad en el sistema de base de datos en s, incluyendo a los usuarios y bases de datos Red de seguridad de MySQL y el sistema.La seguridad est relacionada con las subvenciones para los usuarios individuales Tener copias de seguridad adecuadas y apropiadas de los archivos de base de datos de configuracin y los archivos de registro.

2.- Guia de Seguridad


MySQL utiliza seguridad basada en Listas de Control de Acceso (ACL) para todas las conexiones, consultas y otras operaciones que los usuarios pueden intentar realizar. Tambin hay soporte para conexiones cifradas mediante SSL entre clientes y servidores MySQL No volver a dar a nadien el acceso al usuario en la tabla mysql base de datos. Utilice el GRANT y REVOKE instrucciones para controlar el acceso a MySQL. No otorgue ms privilegios de los necesarios. Nunca conceder privilegios a todos los hosts. Utilice el SHOW GRANTS declaracin para comprobar qu cuentas tienen acceso a qu. A continuacin, utilice elREVOKE declaracin de eliminar los privilegios que no son necesarias No guarde las contraseas en texto plano en su base de datos. Si el equipo se ve comprometida, el intruso podra obtener la lista completa de claves y utilizarlas. En su lugar, utilice SHA2 () , SHA1 () , MD5 () , o alguna otra de un solo sentido funcin hash y almacenar el valor hash. No elija claves de los diccionarios. Existen programas especiales para romper contraseas. Invierta en un firewall. Esto lo protege de al menos el 50% de todos los tipos de vulnerabilidades de cualquier software. Ponga MySQL tras el firewall o en una zona desmilitarizada (DMZ).

Intente escanear sus puertos desde Internet utilizando una herramienta como nmap . MySQL utiliza el puerto 3306 por defecto. Este puerto no debera ser accesible desde lugares no confiables. utilice un protocolo de cifrado como SSL o SSH. MySQL soporta conexiones SSL internas. Otra tcnica es utilizar SSH reenvo de puertos para crear una conexin cifrada (y comprimido) tnel para la comunicacin.

Usuario Final Guas para la Seguridad Contrasea Los mtodos ms seguros son para que el programa cliente solicita la contrasea o para especificar la contrasea en un fichero de opciones debidamente protegidos. Utilice un -p your_pass o - password = your_pass opcin en la lnea de comandos. Esto es conveniente pero inseguro . En algunos sistemas, la contrasea se hace visible a los programas de estado del sistema, como ps que pueden ser invocados por otros usuarios para mostrar lneas de comandos. Utilice el p- o - password opcin en la lnea de comandos sin ningn valor la contrasea especificados. En este caso, el programa cliente solicita la contrasea de manera interactiva , este mtodo de introduccin de una contrasea es adecuado slo para los programas que se ejecutan de forma interactiva. Guarde su contrasea en un fichero de opciones. Por ejemplo, en Unix, se puede enumerar la contrasea en el[cliente] seccin del my.cnf. archivo en el directorio de inicio. Guarde su contrasea en el MYSQL_PWD variable de entorno, este mtodo de suministrar la contrasea MySQL debe ser considerado extremadamente inseguro. Algunas versiones de ps incluyen una opcin para visualizar el entorno de los procesos en ejecucin.

Directrices para la Seguridad de la contrasea de administrador Los administradores de bases de datos debe utilizar las siguientes pautas para mantener las contraseas seguras.

Los administradores de bases de datos debe utilizar las siguientes pautas para mantener las contraseas seguras. Un usuario que tiene acceso para modificar el directorio de plugins o el my.cnf archivo que especifica la ubicacin del directorio de plugins plugins

pueden reemplazar y modificar las capacidades proporcionadas por los plugins, incluyendo plugins de autenticacin.

Contraseas y el registro de Las contraseas pueden aparecer como texto sin formato en las sentencias de SQL tales como CREATE USER ,GRANT , y SET PASSWORD , o declaraciones que invocan el PASSWORD () funcin. Si estas declaraciones son registrados por el servidor MySQL, las contraseas estn disponibles para cualquier persona con acceso a los registros. Para protegerse contra la exposicin indebida a los archivos de registro, que debe estar ubicado en un directorio que restringe el acceso a slo el servidor y el administrador de base de datos. Si inicia la sesin a las tablas en el mysql base de datos, el acceso a las tablas no deben otorgarse a todas las cuentas no administrativas. Hashing de contraseas en MySQL

Cada cuenta MySQL se puede asignar una contrasea, aunque el usuario mesa no almacena la versin de texto plano de la contrasea, sino un valor hash calculado a partir de la misma.

Cuando un cliente intenta conectarse al servidor, existe un paso inicial de autenticacin en el que el cliente debe presentar una contrasea que tiene un valor hash coincida con el valor hash almacenado en el usuario tabla para la cuenta de que el cliente desea utilizar.

El servidor comprueba los valores hash durante la autenticacin cuando un cliente intenta conectarse primero. El servidor genera valores hash si un cliente conectado invoca la PASSWORD () o la funcin utiliza una sentencia de generacin de contrasea para establecer o cambiar una contrasea. El original (pre-4.1) Mtodo Hashing El mtodo de hashing original producido una cadena de 16 bytes. Tales hashes tener este aspecto:

mysql> SELECT CONTRASEA ('MYPASS'); + -------------------- + CONTRASEA ('MYPASS') | | + -------------------- + | 6f8c114b58f2ce9e | + -------------------- + Para almacenar las contraseas de cuentas, la contrasea columna del usuario tabla Fue en este punto 16 bytes de longitud. El 4,1 Mtodo Hashing MySQL 4.1 introduce hash de la clave que proporciona una mayor seguridad y reduce el riesgo de intercepcin de contraseas.

En MySQL 4.1.1, el mtodo de dispersin fue modificada para producir un valor

largo de 41-byte Hash: mysql> SELECT CONTRASEA ('MYPASS'); + ------------------------------------------- + CONTRASEA ('MYPASS') | | + ------------------------------------------- + | * 6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 | + ------------------------------------------- + El formato de la contrasea hash ms largo tiene mejores propiedades criptogrficas, y autenticacin de cliente basada en hashes largos es ms segura que la basada en los antiguos hashes cortos.

Problemas de compatibilidad relacionadas con los mtodos hashing La ampliacin de la contrasea columna en MySQL 4.1 de 16 bytes a 41 bytes afecta a las operaciones de instalacin o actualizacin del siguiente modo:

Si realiza una nueva instalacin de MySQL, la contrasea columna se ampla a 41 bytes automticamente. Para actualizaciones desde una versin anterior a 4.1 a 4.1 o posterior, debe actualizar las tablas del sistema despus de la actualizacin.

Un cliente 4.1 o posterior se puede conectar a un servidor pre-4.1, ya que el cliente comprenda tanto el pre-4.1 y 4.1 mtodos de hashing de contraseas. Sin embargo, un cliente pre-4.1 que intenta conectarse a un servidor 4.1 o posterior puede tener dificultades. Las diferencias entre los hashes de contraseas cortos y largos son

relevantes para la forma en que el servidor utiliza contraseas durante la autenticacin y por cmo genera los hashes de contraseas para clientes conectados que llevan a cabo las operaciones de cambio de contrasea.

Si la columna es corta, slo a corto-hash se utiliza la autenticacin. Si la columna es larga, puede soportar hashes cortos o largos, y el servidor puede usar cualquier formato.

Implicacin del cambio en el hashing de contraseas en MySQL 4.1 para Programas de Aplicacin Una actualizacin a MySQL versin 4.1 o posterior pueden causar problemas de compatibilidad para aplicaciones que usan PASSWORD () para generar contraseas para sus propios fines. Las aplicaciones no deben hacerlo, porque PASSWORD () se debe utilizar slo para gestionar las contraseas para las cuentas MySQL, algunas aplicaciones usan PASSWORD () para sus propios propsitos de todos modos. El curso de accin recomendado en estos casos es modificar la aplicacin para usar otra funcin, comoSHA2 () , SHA1 () , o MD5 () , para producir valores hash.

Hacer que MySQL sea seguro contra ataques Cuando se conecta a un servidor MySQL, debera utilizar una contrasea. La contrasea no se transmite en texto claro a travs de la conexin. Contrasea manipulacin durante la conexin de un cliente se actualiz en MySQL 4.1.1 para ser muy seguro. Si usted todava est utilizando pre-4.1.1-claves del tipo, el algoritmo de cifrado no es tan fuerte como el nuevo algoritmo. Si la conexin entre el cliente y el servidor pasa a travs de una red insegura, y usted est preocupado acerca de esto, se puede utilizar el protocolo comprimido para hacer que el trfico mucho ms difcil de descifrar. Tambin puede utilizar el soporte SSL interna de MySQL para hacer la conexin an ms segura. Tambin puede utilizar SSH para conseguir una conexin cifrada TCP / IP entre un servidor MySQL y el cliente MySQL.

Exigir a todas las cuentas MySQL para tener una contrasea. Nunca ejecute el servidor MySQL como el Unix raz del usuario. Esto es extremadamente peligroso, ya que cualquier usuario con el ARCHIVO privilegio es capaz de hacer que el servidor de crar ficheros como root . Para prevenir

esto, mysqld rechaza

ejecutarse

como root a

menos

que

se

utilice

explcitamente el - user = root opcin. . Puede crear una cuenta separada Unix llamado mysql para hacelo todo an ms seguro. Utilice esta cuenta tan solo para administrar MySQL.

Asegrese de que la nica cuenta de usuario Unix con permisos de lectura o escritura en los directorios de bases de datos es la cuenta que se utiliza para ejecutar mysqld .

No

conceda

el PROCESO o super privilegio salida de mysqladmin

los

usuarios

no

administrativos. La

processlist y PROCESSLIST

MOSTRAR muestra el texto de cualquier sentencia que se est ejecutando, por lo que cualquier usuario que tiene permiso para ver la lista de procesos del servidor

Si usted no confa en sus DNS, podra utilizar direcciones IP en lugar de nombres de host en las tablas de permisos. En cualquier caso, usted debe ser muy cuidadoso en crear registros en tablas de permiso utilizando nombres de host que contienen caracteres comodn.

Relacionados con la seguridad de mysqld Opciones y variables La siguiente tabla muestra mysqld opciones y variables del sistema que afectan a la seguridad.

Nombre allow-suspicious-udfs automatic_sp_privileges chroot des-key-file local_infile old_passwords

CmdLine S

Opcin de Sistema archivo Var S S

Estado Var

Alcance Var

Dinmica

Global

S S

S S S S Global Ambos S S

Nombre safe-show-database safe-user-create secure-auth - Variable : secure_auth asegurar-file-priv - Variable : secure_file_priv skip-grant-tables skip-name-resolve - Variable : skip_name_resolve skip-networking - Variable : skip_networking skip-show-database - Variable : skip_show_database

CmdLine S S S

Opcin de Sistema archivo Var S S S S S

Estado Var

Alcance Var Global

Dinmica S

Global Global Global

S S No

S S S S S

Global

No

Global

No

S S S

Global Global

No No

S S S

Global Global

No No

Global

No

Cmo ejecutar MySQL como usuario normal

En Windows, puede ejecutar el servidor como un servicio de Windows utilizando una cuenta de usuario normal. En Unix, el servidor MySQL mysqld puede iniciarse y ejecutarse por otros usuarios. Sin embargo, debe evitar ejecutar el servidor como el Unix root usuario por motivos de seguridad. Para cambiar mysqld para ejecutarse como un usuario normal, sin privilegios Unix nombre_usuario , debe hacer lo siguiente:

1. Detenga el servidor si se est ejecutando (utilice el comando mysqladmin shutdown ) 2. Cambie los directorios de bases de datos y archivos para nombre_usuario tiene privilegios para leer y escribir archivos en ellos 3. shell> chown-R nombre_usuario / ruta / hacia / mysql / datadir Si no lo hace, el servidor no ser capaz de acceder a bases de datos o tablas cuando se ejecuta comonombre_usuario . 4. Inicie el servidor como usuario nombre_usuario . 5. Para iniciar el servidor como el usuario dado de forma automtica al inicio del sistema, especifique el nombre de usuario mediante la adicin de un usuario a la opcin [mysqld] del grupo de / etc / my.cnf o el archivo de opciones my.cnf.

Cuestiones relacionadas con la seguridad y LOAD DATA LOCAL

El LOAD DATA declaracin puede cargar un archivo que se encuentra en el equipo servidor, o puede cargar un archivo que se encuentra en el equipo cliente cuando el LOCAL palabra clave se especifica.

La transferencia del archivo desde el equipo cliente al equipo servidor se inicia el servidor MySQL. Este servidor puede acceder a cualquier archivo en el equipo cliente para que el usuario cliente tiene acceso de lectura. En un entorno Web donde los clientes se conectan desde un servidor Web, un usuario podra usar LOAD DATA LOCAL para leer cualquier fichero al que el servidor Web tuviese acceso de lectura. Por defecto, todos los clientes MySQL y bibliotecas en distribuciones binarias se compilan con elDENABLED_LOCAL_INFILE-= 1. Puede desactivar todas las LOAD DATA LOCAL declaraciones desde el lado del servidor arrancando mysqldcon la opcin - local-infile = 0.

Client Security Directrices para la programacin Aplicaciones que el acceso de MySQL no debe confiar en ningn dato enviado por los usuarios, que pueden tratar de engaar a su cdigo introduciendo secuencias de caracteres especiales o en formularios webs, URLs, o cualquier aplicacin que haya desarrollado.

Un error comn es proteger nicamente valores de datos de cadena. Recuerde comprobar los datos numricos tambin. Si una aplicacin genera una consulta como SELECT * FROM tabla WHERE ID = 234 cuando un usuario introduce el valor 234 , el usuario puede introducir el valor 234 OR 1 = 1 para provocar que la aplicacin genere la consulta SELECT * FROM tabla WHERE id = 234 OR 1 = 1 . Como resultado de ello, el servidor recupera cada fila de la tabla. Esto expone a cada fila y hace que la carga del servidor excesivo. A veces la gente piensa que si una base de datos contiene slo los datos a disposicin del pblico, no tiene que ser protegida. Esto es incorrecto. Incluso si es permisible para mostrar cualquier fila en la base de datos, que se debera proteger contra ataques de denegacin de servicio.

Activar el modo SQL estricto para indicar al servidor para ser ms restrictiva de lo que los valores de datos que acepta Intente introducir comillas simples y dobles ( " " " y " " " ) en todos sus formularios web. Si tienes cualquier tipo de error MySQL, investigue el problema de inmediato.

Intente modificar las URLs dinmicas aadiendo un 22% ( " " " ), el 23% ( " # " ), y el 27% ( " " " ) para ellos. Intente introducir letras, espacios y smbolos especiales en vez de nmeros en los campos numricos. Compruebe el tamao de los datos antes de pasarlos a MySQL.

Muchas interfaces de programacin de aplicaciones proporcionan un medio de escapar caracteres especiales en los valores de los datos. Utilizado correctamente, esto evita que los usuarios de las aplicaciones introduzcan valores que provoquen que la aplicacin genere sentencias con efectos diferentes a los que usted pretenda.

3.- Unix posterior a procedimientos


En Unix, las tablas de permisos se configuran por el mysql_install_db programa. Para algunos mtodos de instalacin, este programa se ejecuta de forma automtica si una base de datos existente no puede ser encontrado.

Si se instala MySQL en Linux a travs de una distribucin RPM, el servidor RPM ejecuta mysql_install_db .

Usando el sistema de paquetes nativos en muchas plataformas, incluyendo Linux Debian, Linux Ubuntu, Gentoo Linux y otros, el mysql_install_db comando se ejecuta para usted.

Si se instala MySQL en Mac OS X utilizando una distribucin PKG, el instalador ejecuta mysql_install_db .

Despus de completar el procedimiento y tener el servidor en funcionamiento, se deberan asignar contraseas a las cuentas creadas por mysql_install_db y tal vez restringir el acceso a bases de datos de prueba. BASEDIR es el directorio de instalacin de la instancia de MySQL. Es probable que sea algo como / usr / local / mysql o / usr / local . Los pasos siguientes se supone que ha cambiado la ubicacin de este directorio. Se pueden encontrar varios ficheros y subdirectorios del BASEDIR directorio. Lo ms importante para propsitos de instalacin son el bin y scripts de subdirectorios:

El bin directorio contiene los programas cliente y el servidor. Usted debe agregar el nombre de la ruta completa de este directorio a su TRAYECTORIA Los scripts de directorio contiene el mysql_install_db script utilizado para inicializar el mysql base de datos que contiene las tablas que almacenan los permisos de acceso al servidor.

Ejecute mysql_install_db programa para configurar las tablas de permisos MySQL iniciales, que contienen los privilegios que determinan qu usuarios estn autorizados a conectarse al servidor. Por lo general, mysql_install_db se debe ejecutar slo la primera vez que instala MySQL, as que usted puede saltar este paso si est actualizando una instalacin existente, sin embargo, mysql_install_db no sobreescribe ninguna tabla existentes, por lo que debe ser seguro para utilizarlo en cualquier circunstancia. El mysql_install_db script crea directorio de datos del servidor con mysql como propietario. En el directorio de datos, se crea directorios para el mysql base de datos que contiene las tablas de permisos y la prueba dela base de datos que puede utilizar para probar MySQL. El mysql_install_db script crea directorio de datos del servidor con mysql como propietario. En el directorio de datos, se crea directorios para el mysql base de datos que contiene las tablas de permisos y la prueba dela base de datos que puede utilizar para probar MySQL.

Problemas en la ejecucin de mysql_install_db El propsito de la mysql_install_db guin es generar nuevas tablas de privilegios MySQL. No sobrescribe tablas de privilegios MySQL existentes, y no afecta a ningn otro dato. Si desea volver a crear las tablas de privilegios, primero detenga el mysqld servidor si se est ejecutando. A continuacin, cambie el nombre mysql directorio bajo el directorio de datos para guardarlo, y luego ejecutarmysql_install_db . Cuando se ejecuta mysql_install_db , pueden producirse los siguientes problemas:

mysql_install_db falla al instalar las tablas de permisos.Usted puede encontrar que mysql_install_db falla al instalar las tablas de permisos y termina despus

de mostrar los siguientes mensajes: A partir demonio mysqld con bases de datos de XXXXXX mysqld termin

Hay una mysqld proceso en ejecucin, esto indica que el servidor est en ejecucin, en cuyo caso las tablas de permisos probablemente ha sido creado ya.

Instalacin de un segundo mysqld servidor no funciona cuando un servidor est en ejecucin, esto puede suceder cuando se tiene una instalacin existente de MySQL, pero quiero poner una nueva instalacin en una ubicacin diferente.

Usted no tiene acceso de escritura al directorio / tmp directorio, Si usted no tiene acceso de escritura para crear ficheros temporales o un fichero de socket Unix en la ubicacin por defecto (el directorio / tmp del directorio) o el tmp_dir variable de entorno.

Hay algunas alternativas para ejecutar el mysql_install_db secuencia de comandos proporcionada en la distribucin de MySQL:

Si desea que los privilegios iniciales sean diferentes de los predeterminados estndar, puede modificarmysql_install_db antes de ejecutarlo. Sin embargo, es preferible utilizar GRANT y REVOKE para modificar los privilegios despus de las tablas de permisos se han establecido. Si desea instalar MySQL en varias mquinas con los mismos privilegios, usted puede poner el GRANT y REVOKEdeclaraciones en un archivo y ejecutar el archivo como un script utilizando mysql despus de ejecutarmysql_install_db .

Es posible volver a crear las tablas de permisos completamente despus de que hayan sido previamente creados. Es posible que desee hacer esto si usted

apenas est aprendiendo a usar GRANT y REVOKE y se han hecho tantas modificaciones despus de ejecutar mysql_install_db que se desea limpiar las mesas y empezar de nuevo.

Puede iniciar mysqld manualmente utilizando la opcin - skip-grant-tables opcin y agregar la informacin de privilegio por s mismo utilizando mysql : shell> bin / mysqld_safe - user = mysql - skip-grant-tables y shell> bin / mysql mysql

Arrancar y parar MySQL automticamente


Invocar mysqld directamente. Esto funciona en cualquier plataforma. Ejecutar el servidor MySQL como un servicio de Windows. El servicio se puede configurar para iniciar el servidor automticamente cuando se inicia Windows, o como un servicio manual que se inicia a peticin. Invoque mysqld_safe , el cual intenta determinar las opciones apropiadas para mysqld y entonces lo ejecuta con dichas opciones. Este script se usa en sistemas Unix y Unix-like. Invocar mysql.server . Este script se usa principalmente al iniciar y cerrar el sistema en sistemas que utilizan System V directorios de ejecucin estilo (es decir, / etc / init.d . En Mac OS X, instale un paquete separado llamado MySQL Startup Item para habilitar el inicio automtico de MySQL en el inicio del sistema. El Componente de Inicio inicia el servidor invocando mysql.server . Utilice el sistema Solaris / OpenSolaris marco de gestin de servicios (SMF) para iniciar y controlar el arranque de MySQL.

Los mysqld_safe y mysql.server scripts, Windows Server, Solaris / OpenSolaris SMF, y el Mac OS X de inicio del artculo (o panel de MySQL preferencia) se puede utilizar para iniciar el servidor manualmente, o automticamente al iniciar el sistema. Para iniciar y detener MySQL automticamente en el servidor, es necesario agregar comandos de arranque y parada en los lugares apropiados en su / etc / rc * archivos. Si utiliza el servidor Linux paquete RPM ( MySQL-server- VERSION . rpm ), o un paquete de instalacin nativo Linux, el mysql.server script puede ser instalado en el / etc / init.d directorio con el nombre mysql . Si se instala MySQL de una distribucin fuente o usando un formato binario de distribucin que no instalamysql.server automticamente, puede instalarlo manualmente. La escritura se puede encontrar en elsupport-files bajo el directorio de instalacin de MySQL o en el rbol de cdigo fuente MySQL.

Para instalar mysql.server manualmente, copiarlo en el archivo / etc / init.d directorio con el nombremysql , y luego hacerlo ejecutable. En FreeBSD, los scripts de inicio generalmente se encuentran en / usr / local / etc / rc.d / . Los rc (8) establece manuales de pgina que los scripts de este directorio se ejecutan solamente si su nombre base concuerda con el *. SH archivo de shell patrn de nombre. Los dems archivos o directorios presentes en el directorio es ignorado sin advertencias. Tabla 3.1. MySQL Scripts de inicio y apoyados por grupos de opciones de servidor Guin Grupos de opciones mysqld [Mysqld] , [server] , [mysqld- major_version ]

mysqld_safe [Mysqld] , [server] , [mysqld_safe] mysql.server [Mysqld] , [mysql.server] , [servidor]

Arrancar y resolver problemas del servidor MySQL

Si tiene problemas al iniciar el servidor, aqu hay algunas cosas que puede intentar:

Compruebe el registro de errores para ver por qu el servidor no se inicia. Especificar cualquier opcin especial necesaria para el motor de almacenamiento en uso.

Asegrese de que el servidor sabe donde encontrar el directorio de datos. Asegrese de que el servidor puede acceder al directorio de datos.

Algunos motores de almacenamiento tienen opciones que controlan su comportamiento. Se puede crear unmy.cnf archivo y especificar las opciones de inicio para el motor que va a utilizar. Si usted va a usar motores de almacenamiento que soportan tablas transaccionales ( InnoDB , NDB ). Motores de almacenamiento usar los valores predeterminados de opcin si se especifica ninguno, pero se recomienda que revise las opciones disponibles y especificar valores explcitos para aquellos para los que los valores por defecto no son adecuados para su instalacin.

Cuando el mysqld servidor se inicia, se posiciona en el directorio de datos. Aqu es donde espera encontrar bases de datos y donde se espera que para escribir archivos de registro. El servidor tambin escribe el PID (ID del proceso) en el directorio de datos. La ubicacin del directorio de datos se fija cuando se compila el servidor. Si usted recibe Errcode 13 (que significa Permission denied ) al iniciar mysqld , significa que los privilegios del directorio de datos oa su contenido no permiten el acceso al servidor. En este caso, cambie los permisos de los archivos y directorios involucrados para que el servidor tiene derecho a usarlos. Seguras las cuentas iniciales de MySQL

Parte del proceso de instalacin de MySQL es configurar el mysql base de datos que contiene las tablas de permisos:

Distribuciones de Windows contiene tablas de permisos inicializadas. En Unix, el mysql_install_db programa rellena las tablas de permisos. Algunos mtodos de instalacin ejecuta este programa para usted.

El mysql.user tabla de permisos define las cuentas iniciales de MySQL de usuario y sus privilegios de acceso:

Algunas cuentas tienen el nombre de usuario root . Son cuentas de superusuario que tienen todos los privilegios y puede hacer cualquier cosa. Las primeras races contraseas de cuentas estn vacas, por lo que cualquier persona puede conectarse al servidor MySQL.

En Windows, la raz se crean cuentas que las conexiones de permisos desde el host local. Las conexiones pueden hacerse especificando el nombre de host localhost , la direccin IP 127.0.0.1 , o la direccin IPv6 :: 1 .

En Unix, cada raz cuenta permite conexiones desde el host local. Las conexiones pueden hacerse especificando el nombre de host localhost , la direccin IP 127.0.0.1 , la direccin IPv6 :: 1 ,

Algunas cuentas son para los usuarios annimos. Estos tienen un nombre de usuario vaco. Las cuentas annimas no tienen contrasea, as que cualquiera puede usarlos para conectarse al servidor MySQL.

En Windows, hay una cuenta annima, que permite conexiones desde el host local. Las conexiones pueden realizarse mediante la especificacin de un nombre de host localhost .

En Unix, cada una cuenta annima permite conexiones desde el host local. Las conexiones pueden realizarse mediante la especificacin de un nombre de

host localhost para una de las cuentas, o el nombre de host o la direccin IP real para el otro.

4.- El sistema de privilegios de acceso de MySQL


La funcin primaria del sistema de privilegios de MySQL, es autenticar un usuario que se conecta desde un equipo dado, y asociar dicho usuario con privilegios en una base de datos tales como SELECT , INSERT ,ACTUALIZAR y ELIMINAR . Hay algunas cosas que no se pueden hacer con el sistema de privilegios de MySQL:

No se puede especificar a un usuario determinado se le debe negar el acceso. No se puede especificar a un usuario que tiene privilegios para crear o eliminar tablas en una base de datos pero no para crear o eliminar la propia base de datos. Una contrasea se aplica globalmente a una cuenta.

El sistema de privilegios de MySQL asegura que todos los usuarios pueden realizar slo las operaciones permitidas a los mismos Privilegios provisionados por Mysql MySQL proporciona privilegios que se aplican en diferentes contextos y con diferentes niveles de operacin:

Privilegios administrativos que permiten a los usuarios gestionar el funcionamiento del servidor MySQL. Estos privilegios son globales, ya que no son especficos de una base de datos en particular.

Los privilegios para los objetos de base de datos tales como tablas, ndices, vistas y procedimientos almacenados se pueden conceder para objetos especficos dentro de una base de datos de todos los objetos de un tipo determinado dentro de una base de datos. Tabla 4.1. Privilegios admisibles para GRANT y REVOKE Privilegio Columna Contexto bases de datos, tablas, ndices CREAR Create_priv o DROP Drop_priv bases de datos, tablas, vistas o bases de datos, tablas o GRANT OPTION Grant_priv procedimientos almacenados LOCK TABLES Lock_tables_priv bases de datos REFERENCIAS References_priv bases de datos o tablas EVENTO Event_priv bases de datos

Privilegio ALTER DELETE NDICE INSERT SELECT ACTUALIZACIN CREATE TEMPORARY TABLES GATILLO CREATE VIEW Mostrar vista ALTER RUTINA CREATE ROUTINE EXECUTE

Columna Alter_priv Delete_priv Index_priv Insert_priv SELECT_priv Update_priv Create_tmp_table_priv Trigger_priv Create_view_priv Show_view_priv Alter_routine_priv Create_routine_priv Execute_priv

Contexto tablas tablas tablas tablas o columnas tablas o columnas tablas o columnas

ARCHIVO CREATE TABLESPACE CREAR USUARIO PROCESO PROXY RELOAD RPLICA DEL CLIENTE Esclavo de replicacin MOSTRAR LAS BASES DE DATOS Show_db_priv PARO Shutdown_priv ESTUPENDO Super_priv TODOS LOS PRIVILEGIOS [] USO

tablas tablas visitas visitas procedimientos almacenados procedimientos almacenados procedimientos almacenados presentar acceso en el host File_priv servidor Create_tablespace_priv servidor de administracin Create_user_priv servidor de administracin Process_priv servidor de administracin ver proxies_priv mesa servidor de administracin Reload_priv servidor de administracin Repl_client_priv servidor de administracin Repl_slave_priv servidor de administracin servidor de administracin servidor de administracin servidor de administracin servidor de administracin servidor de administracin

Especificando nombres de cuenta Consiste en un nombre de usuario y un nombre de host. Esto permite la creacin de cuentas de los usuarios con el mismo nombre y que pueda conectarse desde distintos hosts. En las sentencias de SQL tales como CREATE USER , GRANT , y SET PASSWORD , se deben escribir los nombres de cuenta con las siguientes reglas:

La sintaxis de los nombres de cuenta es: ' nombre_usuario '@' nombre_sistpral " .

Un nombre de cuenta consiste slo de un nombre de usuario que es equivalente a ' nombre_usuario '@'% ' El nombre de usuario y nombre de host no tiene por qu ser citado si son legales como identificadores no cotizadas. Las citas son necesarias para especificar un nombre_usuario cadena que contiene caracteres especiales (por ejemplo, " " ), o un nombre_host cadena que contiene caracteres especiales o caracteres comodn (por ejemplo, " % " ), por ejemplo, 'test-usuario' @ '% com. ' .

Citar los nombres de usuario y nombres de host como identificadores o cadenas, ya sea utilizando comillas invertidas ( " ` " ), comillas simples ( " ' " ) o comillas dobles ( " " " ).

El nombre de usuario y partes de nombre de host, si es citado, debern cotizar por separado. Es decir, escribir 'yo' @ 'localhost' no 'me @ localhost', este ltimo se interpreta como "me @ localhost '@'% ' .

Control de acceso, Nivel 1: Comprobacin de conexin Cuando intenta conectarse a un servidor MySQL, el servidor acepta o rechaza la conexin basada en su identidad y si se puede verificar su identidad proporcionando la contrasea correcta. Si no, el servidor deniega el acceso completamente. La comprobacin de la identidad se realiza usando los tres usuarios columnas de alcance de la tabla ( host ,usuario y contrasea ). El servido solo acepta la conexin si el Host y User coincide con el nombre de host del cliente y el nombre del usuario y el cliente proporciona la clave especificada en la fila. Si el valor de la columna usuario esta en blanco, el nombre de usuario de una conexin entrante debe coincidir exactamente. Si el valor de usuario esta en blanco se debe ajustar con el nombre del usuario. Si la fila usuario coincide con una conexin de entrada con el nombre en blanco, el usuario debe considerarse como annimo. La columna contrasea puede estar en blanco, pero no significa que pueda usarse cualquier clave, sino que el usuario puede conectarse sin especificar una contrasea. Contraseas con valores en blanco en la tabla usuario representan contraseas encriptados. Control de acceso, nivel 2: Comprobacin de solicitudes Despus de establecer una conexin, el servidor entra en la etapa 2 del control de acceso. Para cada solicitud que se emite a travs de esa conexin, el servidor determina qu operacin desea llevar a cabo, a continuacin, comprueba si tienes suficientes privilegios para hacerlo.

Cuando los privilegios cambian toman efectos. Si modifica las tablas de permisos indirectamente usando administracin de cuentas declaraciones como GRANT ,REVOKE , SET inmediatamente. Si modifica las tablas grant directamente utilizando frases como INSERT , UPDATE , o DELETE , los cambios no tendrn efecto sobre la comprobacin de privilegios hasta que se reinicie el servidor o decirle que se vuelva a cargar las tablas. Para decirle al servidor que recargue las tablas de permisos, ejecutar una operacin flush-privileges. Esto se puede hacer mediante la declaracin de un flush-privileges o mediante la ejecucin del comando mysqladmin flush-privileges o mysqladmin reload. Una recarga tabla de permisos afecta privilegios para cada conexin de cliente existente de la siguiente manera:

PASSWORD o RENAME

USER , el

servidor notifica estos cambios y los cargas en las tablas grant en la memoria

Cambios de tabla y columna de privilegio en vigor con la siguiente peticin del cliente. Base de datos cambia los permisos tengan efecto la prxima vez que el cliente realiza una USEdb_name comunicado. Privilegios globales y las contraseas no se ven afectados por un cliente conectado. Estos cambios entrarn en vigor slo para conexiones posteriores.

5.- Gestin de la Cuenta de Usuario MySQL


Se describen la configuracin que deben de tener las cuentas para clientes dentro de un servidor MySQL. 5.1.- Nombres de Usuario y Contraseas MySQL almacena los usuarios dentro de la tabla users de a base de datos principal de MySQL. Los privilegios que puede tener una cuenta, se define en trminos de un nombre de usuario y el equipo o equipos disponibles para la conexin al servidor. Podemos encontrar algunas diferencias entre los nombres de usuario y las contraseas: Los nombre de usuario, tienen el propsito de ser verificados por autenticacin. El valor predeterminado puede cambiarse fcilmente. Usando una sentencia u- o user.

Pueden tener hasta 16 caracteres.El servidor de MySQL utiliza las contraseas almacenadas para autenticar al cliente que intenta accesar al servidor. MySQL encripta las contraseas que se almacenan en el servidor utilizando un algoritmo propio.

Al realizar la instalacin de MySQL, las tablas que incluyen los permisos se rellenan con un conjunto inicial de cuentas. As mismos, se puedenestablecer, modificar y eliminar cuentas usando las sentencias CREATE USER, GRANT, REVOKE. Cuando se desea conectar a un servidor de MySQL, se utiliza la siguiente sentencia: Shell> mysql user=monty password=contrasea db_name; O en forma corta: Shell>mysql u monty p contrasea db_name; 5.2 Crear Cuentas de Usuario Para realizar la creacin de cuentas de usuario, existen dos formas: Mediante el uso de la declaracin CREATE USER o GRANT. Estas permiten las modificaciones pertinentes a una tabla en cuanto a permisos se refieren. Mediante la manipulacin de la tabla de permisos utilizando sentencias como INSERT, DELETE.

Una tercera opcin, podra ser el uso de MySQL Workbench u otros programas se uso similar. Para poder realizar modificaciones a las cuentas de usuarios, primero se tiene que accesar al usuario root y ste a su vez debe de tener privilegios de INSERT y RELOAD, para poder realizarlas. Los pasos para realizar las modificaciones son los siguientes: 1. Conectarse a MySQL, con la sentencia vista previamente. 2. Utilizar cualquiera de las siguientes sentencias: mysql> CREATE USER 'monty'@'localhost' IDENTIFIED 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' -> WITH GRANT OPTION; mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' -> WITH GRANT OPTION;

BY

mysql> CREATE USER 'admin'@'localhost'; mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost'; mysql> CREATE USER 'dummy'@'localhost'; Las cuentas creadas tienen las siguientes propiedades: Las cuentas que tienen por nombre de usuario monty, son de superusuario. El 'localhost', 'admin' @ cuenta no tiene contrasea. Esta cuenta solo puede ser utilizada por el administrador para conectarse desde el host local. Tiene privilegios administrativos.

Para crear cuentas de usuario usando la opcin INSERT: shell> mysql - user = root mysql mysql> INSERT INTO EN EN Host usuario SET = 'localhost', usuario = 'admin', -> Reload_priv = 'Y', Process_priv = 'Y'; mysql> INSERT INTO usuarios (Host, User, Password) -> VALUES ('localhost', ' dummy ',''); mysql> FLUSH PRIVILEGES; Al crear las cuentas con INSERT, es necesario el uso de FLUSH PRIVILEGES para decirle al servidor que recargue las tablas de permisos. 5.3 Eliminar Cuentas de Usuario Para eliminar cuentas de usuario, se usa el comando DROP USER. Elimina los registros y todos sus permisos, para utilizarlo se necesita tener el permiso global CREATE USER o el DELETE. 5.4 Ajuste de los lmites de una Cuenta Para limitar el nmero de conexiones simultneas que se pueden hacer, se puede configurar los recursos al servidor por medio del comando max_user_connections, adems de que el uso de este comando no permite la gestin de las cuentas individuales. En MySQL, se pueden limitar el uso de los siguientes recursos para las cuentas individuales: El nmero de consultas que una cuenta puede permitir por hora. El nmero de actualizaciones que una cuenta puede emitir por hora. El nmero de veces que una cuenta puede conectarse con el servidor por hora. El nmero de conexiones simultneas al servidor por cuenta.

Para establecer los lmites de recursos de una cuenta, se usa el comando GRANT con un WITH que nombra cada recurso a ser limitado. Ejemplo: mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank'; mysql> GRANT ALL ON customer.* TO 'francis'@'localhost' -> WITH MAX_QUERIES_PER_HOUR 20 -> MAX_UPDATES_PER_HOUR 10 -> MAX_CONNECTIONS_PER_HOUR 5 -> MAX_USER_CONNECTIONS 2; Para modificar los lmiteseistentes para una cuenta, se usa GRANT USAGE. Ejemplo: mysql> GRANT USAGE ON *.* TO 'francis'@'localhost' -> WITH MAX_CONNECTIONS_PER_HOUR 0; 5.5 Asignar Contraseas a las Cuentas Para asignar una contrasea al crear una nueva cuenta con CREATE USER, se incluye un IDENTIFIED BY. Ejemplo: mysql> CREATE USER 'jeffrey'@'localhost' -> IDENTIFIED BY 'mypass'; Para asignar o cambiar la contrasea para una cuenta existente usar un SET PASSWORD: mysql> SET PASSWORD FOR -> 'jeffrey'@'localhost' = PASSWORD('mypass'); Para asignar MYSQLADMIN: una contrasea desde la lnea de comandos, utilizar

shell> mysqladmin-u nombre_usuario -h nombre_host password " newpwd "

Você também pode gostar