You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

267 lines
7.6 KiB
Markdown

---
title: "Instalación de MariaDB y PostgreSQL en Debian"
date: 2022-10-26T09:32:09+02:00
draft: false
categories:
- práctica
- Administración de Bases de Datos
tags:
- MySQL
- apache
- phpMyAdmin
- Práctica 1 ABD
---
## MariaDB
El paquete de MariaDB se encuentra en los repositorios de Debian, por lo que podemos instalarlo directamente con apt:
```bash
sudo apt update
sudo apt install mariadb-server -y
```
Entramos en la base de datos como root:
```bash
mysql -u root -p
```
### Configuración para acceso remoto
Para poder acceder remotamente tenemos que modificar el archivo de configuración `/etc/mysql/mariadb.conf.d/50-server.cnf`, buscando la línea de **bind-address** y poniendo lo siguiente:
```bash
bind-address = 0.0.0.0
```
A continuación reiniciamos el servicio de mariadb:
```bash
systemctl restart mariadb.service
```
Dentro de mariadb, tenemos que crear un usuario para el acceso remoto (el `%` es un comodín para indicar que se pueda acceder desde cualquier dirección):
```sql
GRANT ALL PRIVILEGES ON *.* TO 'remoto'@'%'
IDENTIFIED BY 'remoto' WITH GRANT OPTION;
```
### Creación de usuario
Creamos un usuario con todos los privilegios:
```bash
GRANT ALL PRIVILEGES ON *.* TO 'roberto'@'localhost'
IDENTIFIED BY 'roberto' WITH GRANT OPTION;
```
Ahora podemos entrar con el usuario roberto:
```bash
mysql -u roberto -p
```
### Creación de tablas
Vamos a crear el esquema scott en mysql:
```sql
create database scott;
use scott;
```
```sql
CREATE TABLE IF NOT EXISTS `dept` (
`DEPTNO` int(11) DEFAULT NULL,
`DNAME` varchar(14) DEFAULT NULL,
`LOC` varchar(13) DEFAULT NULL
);
INSERT INTO `dept` (`DEPTNO`, `DNAME`, `LOC`) VALUES
(10, 'ACCOUNTING', 'NEW YORK'),
(20, 'RESEARCH', 'DALLAS'),
(30, 'SALES', 'CHICAGO'),
(40, 'OPERATIONS', 'BOSTON');
CREATE TABLE IF NOT EXISTS `emp` (
`EMPNO` int(11) NOT NULL,
`ENAME` varchar(10) DEFAULT NULL,
`JOB` varchar(9) DEFAULT NULL,
`MGR` int(11) DEFAULT NULL,
`HIREDATE` date DEFAULT NULL,
`SAL` int(11) DEFAULT NULL,
`COMM` int(11) DEFAULT NULL,
`DEPTNO` int(11) DEFAULT NULL
);
INSERT INTO `emp` (`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES
(7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30),
(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30),
(7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20),
(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30),
(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30),
(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10),
(7788, 'SCOTT', 'ANALYST', 7566, '1982-12-09', 3000, NULL, 20),
(7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10),
(7844, 'TURNER', 'SALESMAN', 7698, '1980-09-08', 1500, 0, 30),
(7876, 'ADAMS', 'CLERK', 7788, '1983-01-12', 1100, NULL, 20),
(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30),
(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20),
(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10);
```
## PostgreSQL
El paquete de PostgreSQL se encuentra en los repositorios de Debian, por lo que podemos instalarlo directamente con apt:
```bash
sudo apt install postgreSQL
```
Accedemos al usuario postgres:
```bash
su postgres
```
### Configuración para acceso remoto
Para poder acceder remotamente tenemos que modificar el archivo de configuración `/etc/postgresql/13/main/postgresql.conf`, buscando la línea de **listen_addresses** y poniendo lo siguiente:
```bash
listen_addresses = '*'
```
También, al final del fichero `/etc/postgresql/13/main/pg_hba.conf` tenemos que añadir las siguientes líneas:
```bash
host all all 0.0.0.0/0 md5
host all all ::/0 md5
```
Reiniciamos el servicio para que los cambios tengan efecto:
```bash
systemctl restart postgresql.service
```
Ahora vamos a crear un usuario con contraseña para acceder desde fuera con el siguiente comando dentro de `psql`:
```sql
create user roberto with superuser password 'roberto';
```
### Creación de tablas
Creamos la base de datos y accedemos a `psql`
```bash
createdb scott
psql
```
Dentro del intérprete de comandos añadimos el esquema scott:
```sql
\c scott
create table dept (
deptno integer,
dname text,
loc text,
constraint pk_dept primary key (deptno)
);
create table emp (
empno integer,
ename text,
job text,
mgr integer,
hiredate date,
sal integer,
comm integer,
deptno integer,
constraint pk_emp primary key (empno),
constraint fk_mgr foreign key (mgr) references emp (empno),
constraint fk_deptno foreign key (deptno) references dept (deptno)
);
insert into dept (deptno, dname, loc)
values (10, 'ACCOUNTING', 'NEW YORK'),
(20, 'RESEARCH', 'DALLAS'),
(30, 'SALES', 'CHICAGO'),
(40, 'OPERATIONS', 'BOSTON');
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30),
(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30),
(7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20),
(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30),
(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30),
(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10),
(7788, 'SCOTT', 'ANALYST', 7566, '1982-12-09', 3000, NULL, 20),
(7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10),
(7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30),
(7876, 'ADAMS', 'CLERK', 7788, '1983-01-12', 1100, NULL, 20),
(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, NULL, 30),
(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20),
(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10);
```
## MongoDB
Como indica la [documentación oficial](https://www.mongodb.com/docs/v6.0/tutorial/install-mongodb-on-debian/), Primero tenemos que añadir la clave a nuestros repositorios:
```bash
sudo apt install gnupg gnupg2 gnupg1
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
```
Ahora añadimos el repositorio de mongo a los repositorios de debian:
```bash
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
```
Y ahora, con los repositorios ya añadidos, instalamos mongodb:
```bash
sudo apt update
sudo apt install -y mongodb-org
```
Una vez instalado, iniciamos el servicio y activamos el inicio automático:
```bash
sudo systemctl start mongod
sudo systemctl enable mongod
```
### Configuración de acceso remoto
Tenemos que editar el fichero `/etc/mongod.conf` y comentar la línea `bindIP`:
```bash
# bindIp: 127.0.0.1
```
y reiniciamos el servicio
```bash
sudo systemctl restart mongod
```
### Creación de documentos
En este caso voy a insertar los datos de mi [proyecto de MongoDB](https://github.com/robertorodriguez98/proyectoMongoDB/)
```bash
mongoimport --db=yugioh --collection=prankkids --jsonArray --type json --file=prankkids.json
```
Podemos hacer una consulta para comprobar que se ha creado correctamente:
```sql
use yugioh
db.prankkids.find({"card_sets.set_name":"Hidden Summoners"}).count()
```
![mongo](mongo.sql)