Configurando los usuarios del servidor MySQL con phpMyAdmin

Ahora entramos a phpMyAdmin mediante la dirección http://localhost/phpmyadmin/index.php (recuerda tener MySQL y Apache activos para que phpMyAdmin funcione). Básicamente vamos a realizar las siguientes tareas:
- Crear nuestro propio usuario.
- Borrar usuarios no deseados (ej. el usuario root).
- Aplicar los cambios realizados.
- Configurar phpMyAdmin y los script para el nuevo usuario.
IMPORTANTE: Entrar como usuario root y no salir hasta que se finalice el paso 3.
1 - Creación de un nuevo usuario de MySQL
Desde la portada de phpMyAdmin podemos seleccionar el idioma castellano si lo deseamos. A continuación, pinchamos en el link Privilegios y en la siguiente pantalla damos a Agregar nuevo usuario. Ahora vamos a agregar nuestro usuario y contraseña, que será el que usemos luego en nuestros script locales que hagan uso de MySQL. Por ejemplo, podemos poner el mismo usuario y contraseña que tenemos en nuestro Hosting, pues así tendremos menos cosas que recordar. Como ejemplo, pongamos el usuario Pepe y la contraseña hola.
Introduciremos el nombre de usuario y contraseña, le daremos acceso a "Cualquier servidor" (para que se pueda acceder a MySQL desde cualquier IP, incluidas las externas a nuestro ordenador) o a "Local" (si sólo queremos que se acceda desde nuestro ordenador donde hemos instalado MySQL) y le daremos todos los permisos y privilegios (marcando todas las casillas que aparecen).
2 - Borrado de Usuarios no deseados
Una vez creado nuestro usuario o usuarios, vamos a borrar aquellos que se crean "por defecto" y que conviene borrar para evitar brechas de seguridad, sobre todo si vamos a usar el PC como servidor hacia Internet y no sólo para hacer pruebas desde nuestro hogar. Por ejemplo, vamos a borrar todos los usuarios menos el que acabamos de crear. Lo hacemos de una forma rápida y sencilla desde el mismo link Privilegios de antes: seleccionar los usuarios que no queramos y eliminarlos.
3 - Recarga de Privilegios
Una vez eliminados, debemos buscar un link que sirve para recargar la página de privilegios (ver en la página de privilegios , en la parte de abajo en uno de los recuadros amarillos un texto que contiene el enlace "cargar la página de privilegios") y pulsar en él para que los cambios sean efectivos. De todas formas podemos hacer el anterior paso y éste de una vez: al eliminar usuarios, asegúrate de marcar la casilla que indica que se eliminarán los usuarios y posteriormente se cargará la página de privilegios. Este paso es importante, pues si no recargas los privilegios, ningún cambio anterior habrá sido efectivo.
IMPORTANTE: en caso de producirse el error de "Table 'mysql.servers' doesn't exist" al ejecutarse "FLUSH PRIVILEGES;" se puede generar la tabla "servers" en la base de datos "mysql" manualmente; entramos en la base de datos "mysql" a traves de phpMyAdmin y luego en el editor de SQL pegamos y ejecutamos:
CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,
`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
COMMENT='MySQL Foreign Servers table';
4 - Configurar los Script para el nuevo usuario
NOTA: En el Server2Go no ha hecho falta este 4º paso, además así no se deja el usuario y contraseñas de acceso total a la BBDD escrito en un fichero que cualquiera podría leer si se hace con el USB.
Una vez borrado el usuario root y recargados los privilegios, phpMyAdmin deja de funcionar. ¿Por qué? Pues porque phpMyAdmin venía configurado para usuario root sin password, y éste lo acabamos de eliminar. Entonces ahora tendremos que cambiar dicha configuración de phpMyAdmin para que funcione con el nuevo usuario.
Volvemos a abrir el config.inc.php del phpMyAdmin, y localizamos la primera aparición de estas variables:
$cfg['Servers'][$i]['auth_type']
$cfg['Servers'][$i]['user']
$cfg['Servers'][$i]['password']
Y les cambiamos su valor. En la primera ponemos config para que no nos pida contraseña al entrar (útil si somos el único usuario que va a disponer de este phpMyAdmin), o si queremos que nos la pida ponemos http para autentificación HTTP o bien cookie para autentificación y navegación con cookies. A la segunda le damos el nombre de usuario y a la tercera la contraseña del usuario que acabamos de crear.
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'Pepe';
$cfg['Servers'][$i]['password'] = 'hola';
NOTA: phpMyAdmin tiene un fallo (bug conocido) en esta zona. Al usar autentificación HTTP, un usuario que acaba de abandonar la sesión no puede volver a entrar con el mismo nombre. Para solucionarlo, se deben cerrar todas las ventanas del navegador que estén abiertas, y a continuación si abrimos una nueva ventana y volvemos a intentar entrar nos debería dejar sin problemas. Si quieres poner contraseña a phpMyAdmin y para evitar este problema, te recomiendo que de los dos métodos elijas el de cookies.
Si ahora desde tu navegador, y con el Apache y MySQL activos, accedes a la dirección http://localhost/phpmyadmin/index.php podrás empezar a utilizar phpMyAdmin con tu nuevo usuario y contraseña. Si elegiste pedir contraseña, cuando accedas a phpMyAdmin tu usuario y tu contraseña serán las que pusiste al crear el usuario: Pepe y hola en nuestro caso. Lo primero que harás será crearte una nueva base de datos para meter ahí lo que quieras.
De la misma forma, en nuestros script PHP que usen MySQL usaremos el usuario y contraseña que nos hemos creado, de tal forma que al hacer la conexión a MySQL quede algo como esto:
<?php
// .....Funciones PHP.....
mysql_connect("127.0.0.1","Pepe","hola");
// .....Más funciones PHP.....
?>
O bien, si estamos instalando un prefabricado como PHP Nuke o un foro, o incluso cualquier aplicación en la que nos solicitan un host, usuario y contraseña, los datos que deberemos indicar son esos: 127.0.0.1 o localhost como servidor, Pepe como usuario, hola como contraseña, y el nombre de la base de datos que hayamos creado. No obstante, se recomienda tener unos conocimientos básicos sobre MySQL en PHP para manejar correctamente estas funciones.
- Crear nuestro propio usuario.
- Borrar usuarios no deseados (ej. el usuario root).
- Aplicar los cambios realizados.
- Configurar phpMyAdmin y los script para el nuevo usuario.
IMPORTANTE: Entrar como usuario root y no salir hasta que se finalice el paso 3.
1 - Creación de un nuevo usuario de MySQL
Desde la portada de phpMyAdmin podemos seleccionar el idioma castellano si lo deseamos. A continuación, pinchamos en el link Privilegios y en la siguiente pantalla damos a Agregar nuevo usuario. Ahora vamos a agregar nuestro usuario y contraseña, que será el que usemos luego en nuestros script locales que hagan uso de MySQL. Por ejemplo, podemos poner el mismo usuario y contraseña que tenemos en nuestro Hosting, pues así tendremos menos cosas que recordar. Como ejemplo, pongamos el usuario Pepe y la contraseña hola.
Introduciremos el nombre de usuario y contraseña, le daremos acceso a "Cualquier servidor" (para que se pueda acceder a MySQL desde cualquier IP, incluidas las externas a nuestro ordenador) o a "Local" (si sólo queremos que se acceda desde nuestro ordenador donde hemos instalado MySQL) y le daremos todos los permisos y privilegios (marcando todas las casillas que aparecen).
2 - Borrado de Usuarios no deseados
Una vez creado nuestro usuario o usuarios, vamos a borrar aquellos que se crean "por defecto" y que conviene borrar para evitar brechas de seguridad, sobre todo si vamos a usar el PC como servidor hacia Internet y no sólo para hacer pruebas desde nuestro hogar. Por ejemplo, vamos a borrar todos los usuarios menos el que acabamos de crear. Lo hacemos de una forma rápida y sencilla desde el mismo link Privilegios de antes: seleccionar los usuarios que no queramos y eliminarlos.
3 - Recarga de Privilegios
Una vez eliminados, debemos buscar un link que sirve para recargar la página de privilegios (ver en la página de privilegios , en la parte de abajo en uno de los recuadros amarillos un texto que contiene el enlace "cargar la página de privilegios") y pulsar en él para que los cambios sean efectivos. De todas formas podemos hacer el anterior paso y éste de una vez: al eliminar usuarios, asegúrate de marcar la casilla que indica que se eliminarán los usuarios y posteriormente se cargará la página de privilegios. Este paso es importante, pues si no recargas los privilegios, ningún cambio anterior habrá sido efectivo.
IMPORTANTE: en caso de producirse el error de "Table 'mysql.servers' doesn't exist" al ejecutarse "FLUSH PRIVILEGES;" se puede generar la tabla "servers" en la base de datos "mysql" manualmente; entramos en la base de datos "mysql" a traves de phpMyAdmin y luego en el editor de SQL pegamos y ejecutamos:
CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,
`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
COMMENT='MySQL Foreign Servers table';
4 - Configurar los Script para el nuevo usuario
NOTA: En el Server2Go no ha hecho falta este 4º paso, además así no se deja el usuario y contraseñas de acceso total a la BBDD escrito en un fichero que cualquiera podría leer si se hace con el USB.
Una vez borrado el usuario root y recargados los privilegios, phpMyAdmin deja de funcionar. ¿Por qué? Pues porque phpMyAdmin venía configurado para usuario root sin password, y éste lo acabamos de eliminar. Entonces ahora tendremos que cambiar dicha configuración de phpMyAdmin para que funcione con el nuevo usuario.
Volvemos a abrir el config.inc.php del phpMyAdmin, y localizamos la primera aparición de estas variables:
$cfg['Servers'][$i]['auth_type']
$cfg['Servers'][$i]['user']
$cfg['Servers'][$i]['password']
Y les cambiamos su valor. En la primera ponemos config para que no nos pida contraseña al entrar (útil si somos el único usuario que va a disponer de este phpMyAdmin), o si queremos que nos la pida ponemos http para autentificación HTTP o bien cookie para autentificación y navegación con cookies. A la segunda le damos el nombre de usuario y a la tercera la contraseña del usuario que acabamos de crear.
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'Pepe';
$cfg['Servers'][$i]['password'] = 'hola';
NOTA: phpMyAdmin tiene un fallo (bug conocido) en esta zona. Al usar autentificación HTTP, un usuario que acaba de abandonar la sesión no puede volver a entrar con el mismo nombre. Para solucionarlo, se deben cerrar todas las ventanas del navegador que estén abiertas, y a continuación si abrimos una nueva ventana y volvemos a intentar entrar nos debería dejar sin problemas. Si quieres poner contraseña a phpMyAdmin y para evitar este problema, te recomiendo que de los dos métodos elijas el de cookies.
Si ahora desde tu navegador, y con el Apache y MySQL activos, accedes a la dirección http://localhost/phpmyadmin/index.php podrás empezar a utilizar phpMyAdmin con tu nuevo usuario y contraseña. Si elegiste pedir contraseña, cuando accedas a phpMyAdmin tu usuario y tu contraseña serán las que pusiste al crear el usuario: Pepe y hola en nuestro caso. Lo primero que harás será crearte una nueva base de datos para meter ahí lo que quieras.
De la misma forma, en nuestros script PHP que usen MySQL usaremos el usuario y contraseña que nos hemos creado, de tal forma que al hacer la conexión a MySQL quede algo como esto:
<?php
// .....Funciones PHP.....
mysql_connect("127.0.0.1","Pepe","hola");
// .....Más funciones PHP.....
?>
O bien, si estamos instalando un prefabricado como PHP Nuke o un foro, o incluso cualquier aplicación en la que nos solicitan un host, usuario y contraseña, los datos que deberemos indicar son esos: 127.0.0.1 o localhost como servidor, Pepe como usuario, hola como contraseña, y el nombre de la base de datos que hayamos creado. No obstante, se recomienda tener unos conocimientos básicos sobre MySQL en PHP para manejar correctamente estas funciones.
| Linux