Apuntes de BD para DAW, DAM y ASIR
José Juan Sánchez Hernández
Curso 2023/2024
MySQL WorkBench es la herramienta oficial para trabajar con MySQL desde una interfaz gráfica de usuario. Con esta herramienta podemos diseñar, crear y consultar bases de datos.
Descarga e instala la última versión de MySQL WorkBench.
Una vez instalado MySQL WorkBench vamos a configurar una nueva conexión para conectar con MySQL.
Los parámetros de conexión que tenemos que configurar son los siguientes:
Connection name
Será el nombre con el que queremos etiquetar esta conexión, para no tener que volver a escribir los parámetros de conexión cada vez que queramos conectar con MySQL.
Connection method
Usaremos Standard (TCP/IP)
.
Hostname
Si MySQL se está ejecutando en la
misma máquina donde tenemos instalado MySQL WorkBench el
hostname será 127.0.0.1
.
Si MySQL se está ejecutando en otra máquina, por ejemplo en una máquina virtual, el hostname será la dirección IP de la máquina remota.
Port
El puerto en el que se ejecuta MySQL por defecto es el
3306
.
Username
y
Password
Utilizaremos las credenciales del usuario con el que nos queremos conectar a MySQL.
Default Schema
Si queremos conectarnos a una base de datos específica aquí pondremos el nombre de dicha base de datos. Si queremos acceder a todas las bases de datos a las que tiene acceso el usuario con el que estamos conectando, entonces lo dejaremos en blanco.
Si MySQL se está ejecutando en una máquina remota, diferente a la máquina donde tenemos instalado MySQL WorkBench tendremos que realizar la siguiente configuración.
Edita el archivo de configuración:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Busca la directiva de configuración bind-address
dentro
del bloque de [mysqld]
:
[mysqld]
bind-address = 127.0.0.1
En la configuración por defecto, MySQL sólo permite conexiones desde localhost (127.0.0.1). Habrá que modificar este valor por la dirección IP de la máquina donde se está ejecutando el servicio de MySQL.
[mysqld]
bind-address = IP_SERVIDOR_MYSQL
Si nuestra máquina dispone más de una interfaz de red podemos poner la dirección IP 0.0.0.0 para permitir que se puedan conectar a MySQL desde cualquiera de las interfaces de red disponibles.
[mysqld]
bind-address = 0.0.0.0
Una vez hecho esto tenemos que reiniciar el servicio de MySQL:
Ahora tenemos que asignar privilegios al usuario de MySQL que vamos a utilizar para conectarnos desde la máquina remota.
mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON DATABASE.* TO USERNAME@IP-MÁQUINA-REMOTA IDENTIFIED BY 'PASSWORD';
mysql> FLUSH PRIVILEGES;
mysql> exit;
Si queremos permitir que un usuario se pueda conectar desde cualquier
dirección IP podemos utilizar el comodín %
. De modo que
tendríamos que realizar lo siguiente:
mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON DATABASE.* TO USERNAME@'%' IDENTIFIED BY 'PASSWORD';
mysql> FLUSH PRIVILEGES;
mysql> exit;
Tenga en cuenta que tendrá que reemplazar los valores
DATABASE
, USERNAME
y
IP-MÁQUINA-REMOTA
por los valores que necesite.
Si en lugar de asignar permisos sobre una base de datos concreta
queremos dar permisos para todas las bases de datos podemos usar el
comodín *
. Por ejemplo, si queremos crear un usuario
root
que se puede conectar desde cualquier máquina, que
tiene privilegios sobre todas las bases de datos que existen y cuya
contraseña es root
tendríamos que ejecutar la siguiente
sentencia SQL:
mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
Los usuarios de MySQL se almacenan en la tabla
mysql.user
. La clave primaria de esta tabla está formada
por los valores user
y host
, de modo que cada
fila vendrá identificada por un nombre de usuario y el host desde el que
puede conectarse.
La siguiente consulta nos devuelve el listado de usuarios que tenemos en MySQL y desde qué host pueden conectarse:
En nuestra caso la consulta anterior devuelve el siguiente resultado:
+------------------+--------------+
| user | host |
+------------------+--------------+
| root | % |
| root | localhost |
| debian-sys-maint | localhost |
| phpmyadmin | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
+------------------+--------------+
También podemos consultar qué permisos específicos tiene un
determinado usuario. La siguiente consulta nos devuelve los permisos que
tiene el usuario root
:
+------------------------------------------------+
| Grants for root@% |
+------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' |
+------------------------------------------------+
Ahora vamos a comprobar que podemos conectarnos con MySQL desde otra máquina. Podemos
comprobarlo conectando con el shell de mysql
:
mysql -u USERNAME -p -h IP-SERVIDOR-MYSQL
O haciendo un telnet al puerto donde está corriendo el servicio de MySQL:
telnet IP-SERVIDOR-MYSQL 3306
Si no podemos conectarnos a MySQL revisaremos que el servicio está activo y que no tenemos ningún firewall que nos esté filtrando el puerto del servicio donde se ejecuta MySQL.
Esta
página forma parte del curso
Bases de Datos de
José Juan Sánchez Hernández y
su contenido se distribuye bajo una
licencia
Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.