Diferencia entre revisiones de «Plantilla:BD/Mysql»

De WikiEducator
Saltar a: navegación, buscar
(Mysql)
(Mysql desde línea de comandos)
 
(10 revisiones intermedias por el mismo usuario no mostrado)
Línea 39: Línea 39:
 
  apt-get install mysql-server mysql-client
 
  apt-get install mysql-server mysql-client
 
</source>
 
</source>
*Instalamos phpmyadmin
+
*Instalamos phpmyadmin (phpmyadmin es una aplicación en php que va a gestionar de forma gráfica la base de datos, por lo que para instalar phpmyadmin, debemos tener instalado apache2 y php.
 
<source lang=bash>
 
<source lang=bash>
 
apt-get update
 
apt-get update
apt-get install php-myadmin
+
apt-get install apache2 php libapache2-mod-php
 +
</source>
 +
 
 +
*Una vez instalado, procedemos a instalar '''''phpmyadmin'''''
 +
<source lang=bash>
 +
apt-get update
 +
apt-get install phpmyadmin
 
</source>
 
</source>
 
*Durante el proceso de instalación  vamos seleccionando
 
*Durante el proceso de instalación  vamos seleccionando
Línea 89: Línea 95:
 
Observamos que hay que dar permiso en el servicio mysql para que se conecte desde remoto el usuario root
 
Observamos que hay que dar permiso en el servicio mysql para que se conecte desde remoto el usuario root
 
;Fichero de configuración
 
;Fichero de configuración
1.--  Modificar el fichero de configuracion '''''mysql.conf.d/mysqld.cnf'''''
+
*1.- Accedemos al fichero de configuracion '''''mysql.conf.d/mysqld.cnf'''''
2.- Agregamos la directiva para especificar que se puedan conectar desde cualquier equipo
+
*2.- Agregamos la directiva para especificar que se puedan conectar desde cualquier equipo
 
  bind-address 0.0.0.0
 
  bind-address 0.0.0.0
 
;Creamos pass a root
 
;Creamos pass a root
Línea 98: Línea 104:
 
Y ahora damos los privilegios a root para que se pueda conectar desde cualquier máquina
 
Y ahora damos los privilegios a root para que se pueda conectar desde cualquier máquina
 
<source lang=sql>
 
<source lang=sql>
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'root';
+
  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root12345';
 
</source>
 
</source>
 
+
<!--ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'root12345';-->
*Si no nos deja, probamos a crear de nuevo el usuario
+
*Mucho mejor opcioń es crear un usuario  para conectarnos a la base de datos e interactuar con ella, que sea diferente a  root
  CREATE USER 'root'@'%' IDENTIFIED BY 'root';
+
<source lang=sql>
 +
CREATE USER 'manuel'@'%' IDENTIFIED BY 'manuel12345';
 
Query OK, 0 rows affected (0.02 sec)
 
Query OK, 0 rows affected (0.02 sec)
  
mysql>  GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
+
mysql>  GRANT ALL PRIVILEGES ON *.* TO 'manuel'@'%' ;
 
Query OK, 0 rows affected (0.01 sec)
 
Query OK, 0 rows affected (0.01 sec)
  
*Para probarlo creamos el enlace simbólico
+
</source>
  
 +
*Por último paso actualizamos todos los privilegios
 +
<source lang=sql>
 +
flush privileges
 +
</source>
 +
 +
*Para que funcione phpmyadmin, hemos de modificar un fichero de configuración
 +
/etc/phpmyadmin/config-db.php
 +
*modificamos la directiva dbserver
 +
<source lang=bash>
 +
dbserver='127.0.0.1';
 +
</source>
  
  
Línea 176: Línea 194:
 
{{Plegable|hide|Click para ver el contendio|
 
{{Plegable|hide|Click para ver el contendio|
 
<source lang=sql>
 
<source lang=sql>
 +
 +
-- Si existiera, borramos tanto la base de datos, como el usuario
 +
DROP DATABASE IF EXISTS `dwes`;
 +
 +
 +
 
-- Creamos la base de datos
 
-- Creamos la base de datos
CREATE DATABASE `dwes` DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci;
+
CREATE DATABASE DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;
 +
 
 +
 
 
USE `dwes`;
 
USE `dwes`;
-- Creamos las tablas
+
-- Creamos las tablas en la base de datos creada
CREATE TABLE `dwes`.`tienda` (
+
 
 +
CREATE TABLE `tienda` (
 
`cod` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 
`cod` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 
`nombre` VARCHAR( 100 ) NOT NULL ,
 
`nombre` VARCHAR( 100 ) NOT NULL ,
 
`tlf` VARCHAR( 13 ) NULL
 
`tlf` VARCHAR( 13 ) NULL
 
) ENGINE = INNODB;
 
) ENGINE = INNODB;
CREATE TABLE `dwes`.`producto` (
+
 
 +
CREATE TABLE `producto` (
 
`cod` VARCHAR( 12 ) NOT NULL ,
 
`cod` VARCHAR( 12 ) NOT NULL ,
 
`nombre` VARCHAR( 200 ) NULL ,
 
`nombre` VARCHAR( 200 ) NULL ,
Línea 196: Línea 224:
 
UNIQUE ( `nombre_corto` )
 
UNIQUE ( `nombre_corto` )
 
) ENGINE = INNODB;
 
) ENGINE = INNODB;
CREATE TABLE `dwes`.`familia` (
+
 
 +
CREATE TABLE `familia` (
 
`cod` VARCHAR( 6 ) NOT NULL ,
 
`cod` VARCHAR( 6 ) NOT NULL ,
 
`nombre` VARCHAR( 200 ) NOT NULL ,
 
`nombre` VARCHAR( 200 ) NOT NULL ,
 
PRIMARY KEY ( `cod` )
 
PRIMARY KEY ( `cod` )
 
) ENGINE = INNODB;
 
) ENGINE = INNODB;
CREATE TABLE `dwes`.`stock` (
+
 
 +
CREATE TABLE   `stock` (
 
`producto` VARCHAR( 12 ) NOT NULL ,
 
`producto` VARCHAR( 12 ) NOT NULL ,
 
`tienda` INT NOT NULL ,
 
`tienda` INT NOT NULL ,
Línea 207: Línea 237:
 
PRIMARY KEY ( `producto` , `tienda` )
 
PRIMARY KEY ( `producto` , `tienda` )
 
) ENGINE = INNODB;
 
) ENGINE = INNODB;
 +
 
-- Creamos las claves foráneas
 
-- Creamos las claves foráneas
 
ALTER TABLE `producto`
 
ALTER TABLE `producto`
Línea 212: Línea 243:
 
FOREIGN KEY (`familia`) REFERENCES `familia` (`cod`)
 
FOREIGN KEY (`familia`) REFERENCES `familia` (`cod`)
 
ON UPDATE CASCADE;
 
ON UPDATE CASCADE;
 +
 
ALTER TABLE `stock`
 
ALTER TABLE `stock`
 
ADD CONSTRAINT `stock_ibfk_2`
 
ADD CONSTRAINT `stock_ibfk_2`
Línea 219: Línea 251:
 
FOREIGN KEY (`producto`) REFERENCES `producto` (`cod`)
 
FOREIGN KEY (`producto`) REFERENCES `producto` (`cod`)
 
ON UPDATE CASCADE;
 
ON UPDATE CASCADE;
CREATE USER `dwes`
+
 
IDENTIFIED BY 'abc123.';
+
 
GRANT ALL ON `dwes`.*
+
-- Creamos un usuario para nuestras prácticas Esto no hace falta
TO `dwes`;
+
CREATE USER `dwes12345` IDENTIFIED BY 'Abc123.@';
</source>
+
 
 +
--Otorgamos al usuario permisos de conexión
 +
GRANT ALL PRIVILEGES ON `dwes`.* TO `dwes12345`@'%';</source>
 
{{MRM_Actividad|
 
{{MRM_Actividad|
 
Usa mysql para cargar por líneas de comandos el siguiente fichero arriba especificado
 
Usa mysql para cargar por líneas de comandos el siguiente fichero arriba especificado

Última revisión de 04:43 13 sep 2024

Mysql

Mysql es un gestor de bases de datos relacional. Actualmente es un producto propietario de la empresa Oracle, y el software correspondiente libre es Maria que en estos momentos funciona exactamente igual que Mysql y con los mismos comandos. (año 2017).
Tener en cuenta la diferencia de la parte del servidor (donde realmente se guardan los datos), y la parte del cliente que es un software que nos ofrece una interfaz de comandos o gráfica y nos permite conectarnos al servidor y gestionar la bases de datos (básicamente enviar sentencias SQL y recoger los resultado).
MysqlClienteServidor.png

 apt-get install mysql-server mysql-client

Como todos servicio se puede arrancar o parar

service mysql start/stop/restart/status
  • El fichero de configuración
/etc/mysql/my.cnf



Mysql
  • En él podemos ver el puerto (3306 por defecto), el usuario y otros parámetros del servicio


Icon activity.jpg
Mysql con docker
  • Monta un contenedor de docker llamado contenedorMysql.
  • Instala en el contenedor mysql.
  • Prueba desde tu localhost a conectarte a la base de datos de ese contenedor.





Mysql desde línea de comandos

Es importante saber manejar la línea de comandos con el cliente mysql. En alguna ocasión puede ser la forma más rápida de obtener información o realizar acciones sobre la base de dados. Para ello debemos de repasar algún comandos. Son pocos, pero hay que conocerlos.

Acciones básicas
  1. Conectarse a una base de datos en un servidor
 mysql -u usuario -ppassword
 # Si no especificas el passowr, se solicitará
 # Si lo especificas ha de ir sin ningún espacio entre el  parámetro -p

1.- Mostrar las bases de datos

 SHOW DATABASES;

2.-Usar una base de datos concreta

 USE nombre_base_datos;

3.-Mostrar la descripción de una base de datos (Las tablas que contiene)

 DESCRIBE nombre_tabla;

4.-Obtener ayuda de los comandos disponibles

 help;
  • Por supuesto debemos de poder ejecutar sentencias SQL

5.-Crear una base de datos (Sentencia SQL), y borrarla 6.-Crear una tabla 7.-Crear un usuario y darle permisos 8.-Modificar y borrar una tabla 9.-Insertar, modificar y borrar registros o tuplas 10.-Realizar consultas select

connect -h,-u, -p
 use database
 exit o quit
 help Para conocer los comandos que se pueden usar.
      http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/sql-syntax.html



Icon activity.jpg
Actividad
  1. Conectar a mysql
  2. Mira Las bases de datos que tienes
  3. usa una base de datos concreta
  4. mira las tablas que tiene esa bases de datos
  5. mira la estructura de la tabla
  6. Haz una consulta de los valores que tiene su primera columna
  7. ejecuta el comando help
  8. sal de sql




Bases de datos
  • Vamos a trabajar con un ejemplo de bases de datos de una tienda

Archivo:BaseDatos.pdf

  • Para la base de datos anterior, vamos a establecer un poblar la BD.
  • A continuación el contenido de un sql para poblar la BD


Icon activity.jpg
Actividad

Usando phpmyadmin, carga los datos para poblar la base de datos


Recordando mysql
  • En la siguiente página puedes hacer un repaso de mysql
http://dev.mysql.com/doc/refman/5.7/en/index.html
  • Un manual en castellano
http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/
  • Debemos conocer también la herramienta phpmyadmin
sudo apt-get install phpmyadmin
Recordando mysql en la página oficial
http://www.phpmyadmin.net/home_page/index.php
  • En el proceso de instalación nos pedirá si queremos configurar la base de datos, decimos que sí
Configure database for phpmyadmin with dbconfig-common? [yes/no] yes
  • Especificamos el password para root en phpmyadmin
MySQL application password for phpmyadmin: 
 
Password confirmation:

Especificamos el servidor web para conectarnos a la base de datos

  1. apache2  2. lighttpd
 
(Enter the items you want to select, separated by spaces.)
 
Web server to reconfigure automatically: 1

Mysql Interfaz gráfica

Además de línea de comandos también se dispone de varias herramientas gráficas alternativas. Siempre resulta más agradable e intuitivo, pero requiere más recursos y tener instalados aplicaciones concretas.
En windows o con wine en linux podemos probar SQLyog https://www.webyog.com/product/sqlyog, una herramienta intuitiva y de poco peso. No obstante usaremos phpmyadmin, por ser un clásico y de sencillo uso.



Icon activity.jpg
Actividad
  • Instalamos phpmyadmin en nuestro contenedor contenedorMysql
sudo apt-get install phpmyadmin
  • Probamos a acceder a él desde nuestro localhost
  • Depende de como instalemos es posible que haya que hacer un enlace simbóloco.
  • Para ello hay que buscar dónde se ha instalado el index.php de phpmyadmin .
  • Entonces haceremos un enlace simbólico de esa carpeta a nuestro DocumentRoot.
  • En mi caso:
# ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Probamos a conectarnos por phpmyadmin a nuestro servidor local

#Escribimos en el url
http://ip_contenedor/phpmyadmin



  • Para la base de datos anterior, vamos a establecer un poblar la BD.
  • A continuación el contenido de un sql para poblar la BD


Icon activity.jpg
Actividad

Usando phpmyadmin, carga los datos para poblar la base de datos


  • Otra herramienta importante que permite realizar diseños es workbrench
http://dev.mysql.com/doc/workbench/en/index.html
    sudo add-apt-repository ppa:olivier-berten/misc 
    sudo apt-get update 
    sudo apt-get install  mysql-workbench


Icon activity.jpg
Actividad
  • Instalamos y probamos las diferentes opciones con esta herramienta
  • Probamos a hacer un diseño en modelo relacional y a partir del modelo creamos las tablas.
  • Probamos las opciones forward engineer y reverser engineer




Herramientas de administración

  • Con phpmyadmin, podemos hacer casi todo de administrar y manejar las bases de datos
  • No obstante mysql proporciona una serie de herramientas que permiten administrar por línea de comandos .
  • En muchas ocasiones este tipo de operaciones resultan muy interesantes.
  1. mysql
  2. myhsqladmin
  3. mysqlshow
mysqladmin
  • Es un cliente específico para la administración
  • Entre otras acciones podemos realizar:
  1. crear y eliminar bases de datos.
  2. mostrar la configuración y el estado del servidor.
  3. cambiar contraseñas.
  4. detener un servidor.
  5. ver la version del servidor
     http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/mysqladmin.html


Icon activity.jpg
Actividad

Prueba a hacer cada una de las acciones especificadas anteriormente

mysqladmin -u root -proot create nombreBaseDatos
mysqladmin -u root -proot extend-status
mysqladmin -u root -proot password 
mysqladmin -u root -proot shutdown
mysqladmin -u root -proot version




mysqlshow
http://ftp.nchu.edu.tw/MySQL//doc/refman/5.0/es/mysqlshow.html
  • muestra información sobre la base de datos
mysqlshow -u root -proot 
  • Nos mostraría las tablas de ese usuario