Diferencia entre revisiones de «MySQL»

De enunpimpam
Saltar a: navegación, buscar
 
(No se muestran 2 ediciones intermedias del mismo usuario)
Línea 6: Línea 6:
 
Para instalar MySQL, debes [[Añadir aplicaciones| instalar]] los siguientes paquetes:  '''mysql-server''' y '''mysql-client'''.
 
Para instalar MySQL, debes [[Añadir aplicaciones| instalar]] los siguientes paquetes:  '''mysql-server''' y '''mysql-client'''.
 
Existe un entorno gráfico del programa llamado '''mysql administrator''', dependiente de los anteriores paquetes. Y opcionalmente el paquete ''''mysql-query-browser''', que servirá para realizar consultas.
 
Existe un entorno gráfico del programa llamado '''mysql administrator''', dependiente de los anteriores paquetes. Y opcionalmente el paquete ''''mysql-query-browser''', que servirá para realizar consultas.
   
+
<syntaxhighlight lang="bash">
 +
sudo apt-get install mysql-server
 +
sudo mysql_secure_installation
 +
 
 +
  </syntaxhighlight>
 
== Configuración ==
 
== Configuración ==
 
   
 
   
Línea 76: Línea 80:
 
   
 
   
 
  GRANT tipo_privilegio ON {nombre_tabla | * | *.* | nombre_bd.*} TO usuario;  
 
  GRANT tipo_privilegio ON {nombre_tabla | * | *.* | nombre_bd.*} TO usuario;  
Así para dar el permito ''SELECT'' al usuario ''pepe'' sería:
+
Así para dar el permiso ''SELECT'' al usuario ''pepe'' sería:
 
   
 
   
 
  GRANT SELECT ON * . * TO pepe;  
 
  GRANT SELECT ON * . * TO pepe;  
Línea 83: Línea 87:
 
=== Asignar permisos administrador ===
 
=== Asignar permisos administrador ===
 
  GRANT ALL PRIVILEGES ON * . * TO 'nacho'@'localhost';
 
  GRANT ALL PRIVILEGES ON * . * TO 'nacho'@'localhost';
 +
 +
GRANT ALL PRIVILEGES ON * . * TO nacho with grant option;
 
=== Quitar permisos a un usuario ===
 
=== Quitar permisos a un usuario ===
 
   
 
   

Revisión actual del 10:31 27 ene 2022

MySQL es un gestor de bases de datos bastante popular y rápido. Normalmente lo puedes encontrar instalado en los sitios de hosting.

Instalación

Para instalar MySQL, debes instalar los siguientes paquetes: mysql-server y mysql-client. Existe un entorno gráfico del programa llamado mysql administrator, dependiente de los anteriores paquetes. Y opcionalmente el paquete 'mysql-query-browser, que servirá para realizar consultas.

sudo apt-get install mysql-server
sudo mysql_secure_installation

Configuración

Se te pedirá crear la contraseña del administrador cuando se instale el programa.

En versiones antiguas no se crea con la instalación. Debemos crearla manualmente, nada más instalar el servidor. Para hacerlo teclea en un Terminal.

 $ sudo /usr/bin/mysqladmin -u root password clavenueva 

Puedes cambiar el archivo /etc/mysql/my.cnf para configurar las opciones básicas -- archivo de registro, número de puerto, etc. Mira al archivo /etc/mysql/my.cnf para más detalles.

Una vez asignada una contraseña al administrador, puedes conectar con el servidor mySQL de la manera siguiente:

 $ mysql -h localhost -u root -p 

Donde "localhost" és la dirección de tu host y "root" el nombre de usuario. A continuación introduce el password de la base de datos. Te aparece la siguiente pantala:

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 20 to server version: 5.0.24a-Debian_9ubuntu2-log
   
 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 

Para desconectar,

 mysql> QUIT
 Bye 

Conexión desde un host remoto

Por defecto, MySQL no permite que cualquier usuario puede acceder a las bases de datos usando un conexión TCP. Para que lo permita debes crear un usuario con los permisos correspondientes.

También tendrás que editar el fichero /etc/mysql/my.cnf y modificar la línea:

bind-address            = 127.0.0.1 

Cambiándola por la direccion IP del servidor, o en caso de que se quiera escuchar en todas las IPs:

bind-address            = 0.0.0.0 o la IP que tengas en tu seridor si tienes IP fija 

Despues reinicia el servicio.

sudo etc/init.d/mysql restart

Para que todos los demás ordenadores tengan acceso al servidor. Para más seguridad puedes poner solamente una lista de las IPs de los ordenadores que quieres que tengan acceso.

Si aún no te puedes conectar desde un ordenador remoto tendrás que editar el fichero /etc/hosts.allow y añadir la línea:

mysqld: all 

Gestión de usuarios

Crear un usuario

Para la creación de usuarios tendremos que conectarnos al servidor MySQL (ver más arriba) con un usuario que tenga el permiso global CREATE USER o el permiso INSERT para la base de datos mysql. La sintaxis es la siguiente:

CREATE USER usuario IDENTIFIED BY 'password'; 

Más información en Sintaxis de CREATE USER.

Eliminar un usuario

El usuario que usemos en la conexión debe tener el permiso global CREATE USER o el permiso DELETE para la base de datos mysql. La sintaxis es la siguiente:

DROP USER usuario; 

Más información en Sintaxis de DROP USER.

Dar permisos a un usuario

Los permisos pueden darse en varios niveles:

  • Nivel global
  • Nivel de base de datos
  • Nivel de tabla

La sintaxis es:

GRANT tipo_privilegio ON {nombre_tabla | * | *.* | nombre_bd.*} TO usuario; 

Así para dar el permiso SELECT al usuario pepe sería:

GRANT SELECT ON * . * TO pepe; 

Más información en Sintaxis de GRANT y REVOKE.

Asignar permisos administrador

GRANT ALL PRIVILEGES ON * . * TO 'nacho'@'localhost';
GRANT ALL PRIVILEGES ON * . * TO nacho with grant option;

Quitar permisos a un usuario

La sintaxis es:

REVOKE tipo_privilegio ON {nombre_tabla | * | *.* | nombre_bd.*} FROM usuario; 

Más información en Sintaxis de GRANT y REVOKE.

Gestión de las bases de datos

Crear una Base de datos

Para crear una base de datos nueva puedes hacerlo de, al menos, dos formas. Abre un Terminal y ejecuta lo siguiente.

 $ mysql -h servidor -u usuario -p
 Enter password:
 mysql> CREATE DATABASE nombre_de_la_base_de_datos;
 quit 

Más información en Sintaxis de CREATE DATABASE. También puedes usar la orden mysqladmin.

 $ mysqladmin -h servidor -u usuario -p create nombre_de_la_base_de_datos 

Eliminar una Base de datos

Para eliminar una base de datos que ya no es necesaria en el sistema también tenemos, al menos, dos métodos. En un ventana de Terminal ejecuta.

 $ mysql -h servidor -u usuario -p
 Enter password:
 mysql> DROP DATABASE nombre_de_la_base_de_datos;
 quit 

Más información en Sintaxis de DROP DATABASE. También puedes obtener el mismo resultado con el comando mysqladmin.

 $ mysqladmin -h servidor -u usuario -p drop nombre_de_la_base_de_datos 

Hacer Backup de una Base de datos

Para hacer una copia de seguridad de una base de datos tiene el siguiente comando:

$ mysqldump -h servidor -u usuario -p nombre_de_la_base_de_datos > backup.sql 

Para hacer una copia de seguridad de las bases de datos MySQL de un servidor puedes usar el siguiente script:

<bash>
#!/bin/bash 
## BEGIN CONFIG ##
HOST=localhost
USER=usuario
PASS=secreto
BACKUP_DIR=Backup
## END CONFIG ## 
if [ ! -d $BACKUP_DIR ]; then
 mkdir -p $BACKUP_DIR
fi 
# Backup de MySQL
MYSQL_DBS=$(mysqlshow -h $HOST -u $USER -p$PASS | awk ' (NR > 2) && (/[a-zA-Z0-9]+[ ]+[|]/) && ( $0 !~ /mysql/) { print $2 }'); 
for DB in $MYSQL_DBS ; do  
 echo "* Backuping MySQL data from $DB@$HOST..."
 mysqldump -h $HOST -u $USER -p$PASS $DB > $BACKUP_DIR/mysql_$DB.sql
done
</bash>

Restaurar el Backup de una Base de datos

Para restaurar una base de datos creada anteriormente ejecuta en un Terminal.

$ mysql -h servidor -u usuario -p nombre_de_la_base_de_datos < backup.sql 

Plantilla:Nota

Recuperar la contraseña de ROOT del Serivor MySQL

Para recuperar,o mejor dicho resetear, la contraseña de ROOT del servidor MySQL se puede hacer lo siguiente:

$ /etc/init.d/mysql stop
$ mysqld_safe --skip-grant-tables &
$ mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('nueva_contraseña') WHERE User='root';  
mysql> FLUSH PRIVILEGES;  
mysql> \q
$ killall mysqld;  
$ /etc/init.d/mysql start

Almacenamiento de los datos

Las bases de datos se encuentran en la siguiente dirección:

/var/lib/mysql

Ver también

Enlaces externos