Mostrando entradas con la etiqueta create user. Mostrar todas las entradas
Mostrando entradas con la etiqueta create user. Mostrar todas las entradas

miércoles, 24 de septiembre de 2014

Las conexiones de usuario de MySQL

Original post: http://anothermysqldba.blogspot.com/2014/09/mysql-user-connections.html

Así que me encontré explicando las diferencias con los usuarios de MySQL y la forma en que se autentican. En primer lugar esta información no es nueva, pero se puede encontrar aquí:
Me limitaré a mostrar algunos ejemplos del mundo real para explicar esto.

MySQL utiliza el nombre de usuario, así como el inicio de sesión cuando se evalúa los permisos de un usuario. Por ello, una buena práctica consiste en eliminar los usuarios anónimos.

Para este ejemplo voy a empezar con los siguientes usuarios



MariaDB [(none)]> select user , host from mysql.user;
+---------+-----------+
| user | host |
+---------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| | centos64 |
| root | centos64 |
| | localhost |
| root | localhost |
+---------+-----------+

Puedo iniciar sesión en el servidor incluso pensé que no tengo un nombre de usuario, ya que por defecto abajo a anónimo @ localhost.


# mysql -u nobody
MariaDB [(ninguno)]> selecciona current_user ();
+ ---------------- +
| Current_user () |
+ ---------------- +
|localhost |
+ ---------------- +
MariaDB [(ninguno)]> Presentación subvenciones;
+ + --------------------------------------
| Ayudas alocalhost |
+ + --------------------------------------
| CONCESIÓN DE USO * A * '' @ 'localhost'. |
+ + --------------------------------------

Si bien no puedo hacer mucho todavía tengo en la base de datos.

Ahora cuando paso un usuario conocido:


# mysql -u root -p
MariaDB [(ninguno)]> selecciona current_user;
+ ---------------- +
| Current_user |
+ ---------------- +
| Root @ localhost |
+ ---------------- +
MariaDB [(ninguno)]> Presentación subvenciones;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Ayudas a root @ localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| OTORGAR PRIVILEGIOS EN TODOS * A * 'root' @ 'localhost' IDENTIFICADO POR CONTRASEÑA '* 8CD56861FDADF7A264741F27D502D1A8DAE0A8F7' WITH GRANT OPTION. |
| GRANT proxy en '' @ '' A 'root' @ 'localhost' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+


Actualmente el usuario root tiene 4 cuentas diferentes.

MariaDB [(none)]> select user , host from mysql.user where user = 'root';
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| root | centos64 |
| root | localhost |
+------+-----------+

Estas son todas diferentes cuentas. Yo sólo necesito uno de ellos sin embargo. Yo sólo uso la cuenta de root a través de conexiones locales de acogida.

MariaDB [(none)]> DROP USER 'root'@'127.0.0.1';
Query OK, 0 rows affected (0.33 sec)

MariaDB [(none)]> DROP USER 'root'@'centos64';
Query OK, 0 rows affected (0.02 sec)

MariaDB [(none)]> DROP USER 'root'@'::1';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select user , host from mysql.user where user = 'root';
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+

Entonces, ¿qué quiero decir con 4 cuentas diferentes? Ellos toda la cuenta de usuario root. No .. Son raíz y cualquier anfitrión. Así que cada cuenta (usuario + host) puede tener diferentes permisos.

Así que vamos a hacer un ejemplo siguiente para mostrar la diferencia.
Así el servidor en este ejemplo tiene dos interfaces de red. Así que voy a crear un usuario por todos los puntos de acceso a cada uno con diferentes permisos para mostrar las diferencias. Voy a establecer la misma contraseña, pero los podía ser diferente también.

MariaDB [(none)]> GRANT SELECT ON *.* TO 'anothermysqldba'@'10.0.2.15' IDENTIFIED BY '<cleartext password>';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE , DROP, RELOAD, SHUTDOWN, PROCESS, FILE, INDEX, ALTER ON *.* TO 'anothermysqldba'@'192.168.0.%' IDENTIFIED BY '<cleartext password>';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'anothermysqldba'@'localhost' IDENTIFIED BY '<cleartext password>' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(ninguno)]> selecciona usuario, anfitrión de mysql.user donde usuario = 'anothermysqldba';
+ ----------------- + ------------- +
| Usuario | acogida |
+ ----------------- + ------------- +
| Anothermysqldba | 10.0.2.15 |
| Anothermysqldba |. 192.168.0% |
| Anothermysqldba | localhost |
+ ----------------- + ------------- +

Así que ¿qué significa esto? A pesar de que los nombres de usuario son los mismos ya que MySQL utiliza el host, así para validar un usuario cada punto de acceso de usuario como diferentes permisos.

Mientras que usted puede confiar en algunos de sus desarrolladores, esto es a menudo una buena idea limitar algunos de su acceso si están trabajando de forma remota o por medio de sus guiones. Si tienen que hacer algo que no le implica y tienen que ssh al servidor en sí y de ingresar para realizar otras tareas. Esto es, por supuesto, depende de la relación y el trabajo del flujo de su negocio y / o aplicaciones.

Uso de la 10.0.2.15 anfitrión el usuario sólo debe seleccionar acceder.

# mysql -h 10.0.2.15 -u anothermysqldba -p
MariaDB [(ninguno)]> selecciona current_user ();
+ --------------------------- +
| Current_user () |
+ --------------------------- +
| Anothermysqldba@10.0.2.15 |
+ --------------------------- +
MariaDB [(ninguno)]> Presentación subvenciones;
+-------------------------------------------------------------------------------------------------------------------------+
| Ayudas a anothermysqldba@10.0.2.15 |
+-------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT en * A * 'anothermysqldba'@'10.0.2.15' IDENTIFICADO POR CONTRASEÑA '* 31360D7EE84BE965C0E759179FC61B6943BCA64F'. |
+-------------------------------------------------------------------------------------------------------------------------+

Uso de host 192.168.0.26 el usuario tiene más acceso. Esta cuenta también se fija para acceder a través de cualquier cosa bajo el 192.168.0 / 255 (%) de subred.

# mysql -h 192.168.0.26 -u anothermysqldba -p
MariaDB [(ninguno)]> selecciona current_user ();
+ ----------------------------- +
| Current_user () |
+ ----------------------------- +
| Anothermysqldba@192.168.0.% |
+ ----------------------------- +
MariaDB [(ninguno)]> Presentación subvenciones;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Ayudas a anothermysqldba@192.168.0.% |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PARO, PROCESO, ARCHIVO, INDEX, ALTER en * A * 'anothermysqldba'@'192.168.0.%' IDENTIFICADO POR CONTRASEÑA '* 31360D7EE84BE965C0E759179FC61B6943BCA64F'. |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Así como se puede inferir que el usuario localhost tiene la cuenta de acceso completa.

# mysql -u anothermysqldba -p
MariaDB [(ninguno)]> selecciona current_user ();
+ --------------------------- +
| Current_user () |
+ --------------------------- +
| Anothermysqldba @ localhost |
+ --------------------------- +
1 row in set (0.00 sec)

MariaDB [(ninguno)]> Presentación subvenciones;
+---------------------------------------------------------------------------------------------------------------------------------------------------+
| Ayudas a anothermysqldba @ localhost |
+---------------------------------------------------------------------------------------------------------------------------------------------------+
| OTORGAR PRIVILEGIOS EN TODOS * A * 'anothermysqldba' @ 'localhost' IDENTIFICADO POR CONTRASEÑA '* 31360D7EE84BE965C0E759179FC61B6943BCA64F' WITH GRANT OPTION. |
+---------------------------------------------------------------------------------------------------------------------------------------------------+

Ahora, como he dicho antes, es la mejor práctica para eliminar los usuarios anónimos. Usando el mysql_secure_installation para la instalación le ayudará con su también.

¿Por qué es importante?

# mysql -u anothremysqldba -p
MariaDB [(ninguno)]> selecciona current_user ();
+ ---------------- +
| Current_user () |
+ ---------------- +
|localhost |
+ ---------------- +
1 row in set (0.00

El ejemplo simple ... está por encima y sólo evitar errores simples. Un error tipográfico permitió el acceso a la base de datos, no se debe permitir esto.

Así que a continuación, eliminar y probar de nuevo.

MariaDB [(none)]> DROP USER ''@'localhost';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> DROP USER ''@'centos64';
Query OK, 0 rows affected (0.00 sec)

# Mysql-u anothremysqldba -p
Introduce el password:
ERROR 1045 (28000): Acceso denegado para el usuario 'anothremysqldba' @ 'localhost' (using password: SI

Entonces, ¿qué significa si su base de datos se crea con todo con% como los nombres de host o direcciones IP estricta y no hay comodines?

Esta sería una decisión de seguridad y los negocios de su parte. Personalmente no es una opción válida en mi opinión. Nada más que un comodín (%) permite que un punto de acceso robusto, pero si el firewall tiene un fallo también abre el acceso a distancia alejado de usuarios de la red. Una dirección IP estricta por usuario también es bastante estricto en mi opinión, pero depende del usuario. Por ejemplo, incluso con una cuenta que ha sido creado para la replicación prefiero seguir utilizando la dirección IP con un ejemplo.%: 192.168.0%. Direcciones IP cambian (incluso los cambios estáticos para los usuarios remotos la DBA a menudo no se le dice) y que a menudo resulta en la gente que viene a la DBA con quejas por falta de acceso.

Una vez trabajé con una persona que limita el acceso cada usuario bloqueado a una dirección IP estática. Esta persona tuvo que alterar constantemente las declaraciones de subvención. La gente tiene que ser capaz de trabajar con facilidad y eficacia, mientras que usted puede garantizar la seguridad en su final.


domingo, 19 de mayo de 2013

Los usuarios de MySQL :: Becas :: mysql_config_editor :: Seguridad

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-users-grants-mysqlconfigeditor.html

El acceso seguro a la base de datos es probable que la prioridad número uno para cualquier administrador de base de datos. Si no es así, entonces usted necesita considerar seriamente por qué no lo es. 

Las pautas generales a través del manual ya están disponibles: 


Uno de los principales problemas con la seguridad en MySQL es, por supuesto, los permisos que se ofrecen a los usuarios. 
Estas son algunas pautas simples. 

En primer lugar mantener "super usuario" o cuentas "root" al mínimo. Un usuario con acceso completo o "GRANT ALL" todavía tendrá acceso cuando haya alcanzado sus conexiones máx.Así que lo último que querría es un programa que va a ejecutar comandos con un usuario con acceso completo. 

Tenga en cuenta qué tipos de cuentas que está creando. Usted puede limitar a un usuarioMAX CONSULTAS, MAX, MAX ACTUALIZACIONES conexiones y MAX conexiones de usuario por hora . 

Tenga en cuenta el entorno de red que los usuarios se conectan desde. Si los usuarios van a utilizar direcciones de red DHCP en la misma subred que sólo sería la creación de más trabajo para ti si les limitado a una sola dirección IP. Todavía les puede limitar a la subred aunque con un comodín. Por ejemplo '192 .168.0.2 "versus '192 .168.0.% ' 

Manténgase alejado de todo acceso comodín para el host y los usuarios. 



> CREATE USER ''@'192.168.0.56' ;
Query OK, 0 rows affected (0.02 sec)

> show grants for ''@'192.168.0.56';
+-----------------------------------------+
| Grants for @192.168.0.56 |
+-----------------------------------------+
| GRANT USAGE ON *.* TO ''@'192.168.0.56' |
+-----------------------------------------+


Esto dejará abierta para cualquier persona de 192.168.0.56 y no es una cosa segura inteligente. 
También podría violar otras cuentas desde 192.168.0.56 ya que MySQL comprueba anfitrión primero y segundo nombre de usuario. 


> GRANT SELECT ON test.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY 'somepassword';

> show grants for 'exampleuser'@'192.168.0.%';
+----------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@192.168.0.% |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT ON `test`.* TO 'exampleuser'@'192.168.0.%' |
+----------------------------------------------------------------------------------------------------------------------+

Esto permitirá que selecciona sólo para exampleuser del '192 .168.0.%. También debe tener en cuenta que si exampleuser se conecta desde HOST LOCAL que el sistema probablemente localhost usuario en primer lugar antes de la. Dirección de subred 192.168.0% menos que el usuario utiliza la dirección de subred del host conectarse. 

Esto significa que puede crear un usuario y contraseña con privilegios diferentes por host. 


> SHOW GRANTS FOR 'exampleuser'@'localhost';
+--------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@localhost |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'localhost' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT, UPDATE, DELETE ON `test`.* TO 'exampleuser'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------+

Haga su mejor esfuerzo para no utilizar la opción - password = opción <contraseña> través del cliente de mysql. Usted puede utilizar-p para que solicite una contraseña. 

Usted también tiene la opción de MySQL 5.6 para utilizar la Utilidad de configuración de MySQL . 


# mysql_config_editor set --login-path=local --host=localhost --user=root --password
Enter password: 




# mysql_config_editor print --all
[local]
user = root
password = *****
host = localhost 


# Mysql
ERROR 1045 (28000): Acceso denegado para el usuario 'root' @ 'localhost' (using password: NO)

# Mysql - login-path = local
Bienvenido al monitor de MySQL.

# Mysql - login-path = local-e "SELECT NOW () ';

Usted tiene opciones para nombrar los diferentes caminos como local o remoto y etc también. Así que usted puede codificar más de una cuenta de usuario de acceso en el archivo ~ /. Mylogin.cnf archivo que se creará una vez que utiliza el comando set. 

Si tiene scripts de shell que utilizan el cliente mysql y es probable entonces que las contraseñas de los scripts de actualización a utilizar el "- login-path =" es una forma más segura de ir. 


Por supuesto, cuando ya no es necesario que un usuario ... Suelta el usuario. 


> DROP USER 'exampleuser'@'localhost';