¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal


Estableciendo la contraseña de root en MySQL 

Copyright © 2005-2017 LinuxTotal.com.mx
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.

Autor: Sergio González D.  

Lo primero que debes hacer una vez que instalas un servidor de base de datos MySQL es establecer la contraseña del usuario administrador o root, de hecho no tiene que llamarse root, puedes ponerle el nombre que desees. Es muy sencillo, pero hay que entender los alcances de lo que hacemos, asi que veámoslo paso a paso. Una vez arrancado el servicio de mysql (aqui para un tutorial sobre servicios), indicamos en el shell que inicie el monitor mysql:

#> mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 5.0.26

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Lo primero que notamos es que al iniciar el monitor de mysql o la línea de comandos de MySQL es que no necesitamos de una contraseña, malo, muy malo, porque obviamente cualquiera puede entrar y manipular las bases de datos que tengamos. Asi que vamos a establecer al usuario 'root' como el usuario administrador global de todas las bases de datos, aunque todavía no se hayan creado, y tendrá todos los privilegios sobre estas, asi como la capacidad de otorgar (grant) privilegios a otros usuarios:

mysql> grant all privileges on *.* to root@'localhost' identified by 'sesamo' with grant option;
Query OK, 0 rows affected (0.00 sec)
  • grant: es el comando que permite 'conceder' privilegios a un usuario.
  • all privileges: se conceden todos los privilegios a este usuario, los posibles privilegios (hasta esta versión 5.0.26) son: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE_TMP_TABLE, LOCK_TABLES, CREATE_VIEW, SHOW_VIEW, CREATE_ROUTINE, ALTER_ROUTINE, EXECUTE y GRANT.
  • on: los objetos a los que se aplican los privilegios, el formato es base_de_datos.tabla, *.* quiere decir entonces, todas las bases de datos y todas las tablas. Otros ejemplos: ventas.*, contabilidad.polizas, etc.
  • to: el usuario al que se le conceden los privilegios, el formato es usuario@'equipo', en el ejemplo el usuario es 'root' cuando se conecte desde 'localhost', es decir, solo conectado localmente el usuario 'root' tiene acceso total. El comodin en este caso es '%', asi que si se indica root@'%', el acceso podrá ser desde cualquier equipo (no muy buena idea en el caso de root). En 'equipo' es válido una dirección IP, un nombre de dominio o un nombre de dominio con comodines. Ejemplo: sergio@'192.168.10.132', sergio@'linuxtotal.com.mx', sergio@'pruebas.linuxtotal.com.mx', sergio@'*.linuxtotal.com.mx'
  • identified by: la contraseña se indica en esta parte y se escribe en texto plano, asi que cuidado con quien esté a tu espalda. Una vez que presiones 'Enter' la contraseña se encripta.
  • with grant option: esta última parte es opcional, e indica que el usuario en cuestión puede a la vez otorgrar privilegios a otros usuarios sobre los que el tenga permisos, que en este caso son todos. Aqui se nota la importancia de que 'root' solo sea accesible localmente (localhost) por que queda con posibilidades de otorgrar privilegios a otros usuarios.

Una vez creado el usuario 'root' y si nos salimos del monitor con el comando exit, veamos que sucede si deseamos volver a ingresar:

#> mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
#>

Ya no es posible ingresar porque una vez creado un usuario con la opción 'identified by' siempre se requerira que se indique la contraseña para ingresar al monitor, incluso no solo al monitor sino también a herramientas gráficas de administración de MySQL, como phpmyadmin y mysql administrator.

Entonces, ahora debemos indicar la opción '-u' de usuario y '-p' de password para poder ingresar al monitor:

#> mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 5.0.26

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

También es posible indicar la contraseña inmediatamente después de la '-p' sin espacio:

#> mysql -u root -psesamo

Aunque es obvio que es bastante inseguro este método.

Para terminar con este tip, veamos ahora un ejemplo de como deberíamos crear un usuario que se dedica a capturar pólizas de un sistema de contabilidad, donde queremos que pueda seleccionar, insertar o actualizar pólizas pero no borrarlas ni nada más, muy restringido, además solo puede ingresar desde su PC:

#> mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 5.0.26

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| linuxtotal         |
| mysql              |
| contabilidad       |
+--------------------+
4 rows in set (0.03 sec)

mysql>
mysql>use contabilidad;
Database changed
mysql> show tables;
+---------------+
| Tables_in_ca  |
+---------------+
| catalogos     |
| cuentas       |
| polizas       |
| saldos        |
+---------------+
4 rows in set (0.00 sec)

mysql>
mysql> grant select, insert, update on contabilidad.polizas to capturista@'10.0.0.23' identified by 'secreto';
Query OK, 0 rows affected (0.07 sec)
mysql>

Como puede observarse, existen varias bases de datos, una de ellas 'contabilidad' y dentro de esta existen varias tablas. Con el comando grant estamos solo concediendo tres permisos muy específicos de seleccionar, insertar y actualizar registros solo en la tabla 'polizas' de la base de datos 'contabilidad' al usuario 'capturista' cuando se conecte desde el equipo '10.0.0.23' y se identifique con la contraseña 'secreto'. Nótese que no se le concedió la opción with grant option, asi que no podrá este usuario a la vez otorgar ningún privilegio a ningún usuario. Y todo se hizo como el usuario 'root' que es al que inicialmente le concedimos privilegios completos sobre todas las bases de datos y sus tablas.



¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal

LinuxTotal en:

Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.


Dona a través de paypal::


O a través de bitcoins:


14TNQv5wM3xkSv65gHGQ6s6f8yTZuFTohE
Más artículos de LinuxTotal

Si se tiene un servidor ssh al que seguramente se conectan clientes desde otros equipos Linux o Windows con clientes de ssh como p....


La gente considera encriptar algunos o todos sus archivos por múltiples razones. Ya sea que no puedan depender en seguridad físi....


En este archivo de configuración se indica el modo en que los mensajes del sistema son bitacorizados a través de la utileria sys....


El directorio /proc es una bestia extraña. Realmente no existe, sin embargo puedes explorarlo. Sus archivos de tamaño 0 no son n....


El siguiente es un script muy básico de iptables que puedes usar para proteger un solo equipo conectado a Internet a través de u....


yum es un paquete administrador de software(software package manager). Es una muy útil herramienta para instalar, actualizar y re....


Lo primero que debes hacer una vez que instalas un servidor de base de datos MySQL (casi todas las distros actuales lo instalan po....


Cuando usas rm para eliminar o borrar un archivo, lo que realmente sucede es que los datos del archivo, su información tal cual, ....


Si ya has usado la línea de comandos o shell de Linux por un tiempo, seguramente entonces, el comando date ya te es familiar, lo ....


Cron es el nombre del programa que permite a usuarios Linux/Unix ejecutar automáticamente comandos o scripts (grupos de comandos)....



Copyright © LinuxTotal.com.mx 2006-2017
info@linuxtotal.com.mx · linuxtotal.com.mx@gmail.com