Capítulo 6: Seguridad

Enlaces

Cambiar la contraseña de un usuario

En este caso, la del superusuario (root):

GRANT
  ALL
ON
  *.*
TO
  root
IDENTIFIED BY
  'clave';

FLUSH PRIVILEGES;

Lo mismo, pero cuando este usuario se conecta desde la misma máquina en la que está instalado MySQL:

GRANT
  ALL
ON
  *.*
TO
  root@localhost
IDENTIFIED BY
  'clave';

FLUSH PRIVILEGES;

Creación de usuarios

Eliminar la base de datos, empezamos de cero:

DROP DATABASE IF EXISTS videoteca;
CREATE DATABASE videoteca;

Creación de dos usuarios:

CREATE USER cinefago@localhost;
CREATE USER cinefago@'192.168.1.0/255.255.255.0';
GRANT USAGE ON
  *.*
TO
  cinefago@localhost,
  cinefago@'192.168.1.0/255.255.255.0';

CREATE USER cinefilo@localhost;
CREATE USER cinefilo@'192.168.1.0/255.255.255.0';
GRANT USAGE ON
  *.*
TO
  cinefilo@localhost,
  cinefilo@'192.168.1.0/255.255.255.0';

Eliminar permisos

Eliminar todos los permisos de los usuarios que acaba de crear:

REVOKE
  ALL
ON
  *.*
FROM
  cinefago@localhost,
  cinefago@'192.168.1.0/255.255.255.0';

REVOKE
  ALL
ON
  videoteca.*
FROM
  cinefago@localhost,
  cinefago@'192.168.1.0/255.255.255.0';

REVOKE
  ALL
ON
  *.*
FROM
  cinefilo@localhost,
  cinefilo@'192.168.1.0/255.255.255.0';

REVOKE
  ALL
ON
  videoteca.*
FROM
  cinefilo@localhost,
  cinefilo@'192.168.1.0/255.255.255.0';

Asignar permisos

Para asignar los permisos de los dos usuarios:

GRANT
  SELECT,INSERT,UPDATE,DELETE,
  CREATE,DROP,INDEX,ALTER
ON
  videoteca.*
TO
  cinefago@localhost
    IDENTIFIED BY 'clave',
  cinefago@'192.168.1.0/255.255.255.0'
    IDENTIFIED BY 'clave';

GRANT
  SELECT,INSERT,UPDATE,DELETE
ON
  videoteca.*
TO
  cinefilo@localhost
    IDENTIFIED BY 'clave',
  cinefilo@'192.168.1.0/255.255.255.0'
    IDENTIFIED BY 'clave';

Recargar los permisos

Para terminar con la asignación de permisos:

FLUSH PRIVILEGES;

Copia de seguridad en Linux

# Nombre de la base de datos.
BD=$1

# Nombre del usuario.
USUARIO=root

# Clave del usuario.
CLAVE=clave

# Ruta donde guardar la copia de seguridad.
SALIDA=/backups/mysql/

# Fecha de ayer.
FECHA=`date -d yesterday +%Y-%m-%d`

mysqldump 
  --add-drop-table 
  --lock-tables 
  --databases 
  --user=${USUARIO} 
  --password=${CLAVE} 
  ${BD} > ${SALIDA}${FECHA}_${BD}.sql

Copia de seguridad en OS X

# Nombre de la base de datos.
BD=$1

# Nombre del usuario.
USUARIO=root

# Clave del usuario.
CLAVE=clave

# Ruta donde guardar la copia de seguridad.
SALIDA=/backups/mysql/

# Fecha de ayer.
FECHA=`date -v -1d +"%Y-%m-%d"`

mysqldump 
  --add-drop-table 
  --lock-tables 
  --databases 
  --user=${USUARIO} 
  --password=${CLAVE} 
  ${BD} > ${SALIDA}${FECHA}_${BD}.sql

Copia de seguridad en Windows

<job id="backup">


Option Explicit

Dim sBD       'As String
Dim sUsuario  'As String
Dim sClave    'As String
Dim sSalida   'As String
Dim sAno      'As String
Dim sMes      'As String
Dim sDia      'As String
Dim sFecha    'As String
Dim sRuta     'As String

Dim oArgs 'As WScript.Arguments
Set oArgs = WScript.Arguments

sBD      = "videoteca"
sUsuario = "root"
sClave   = "clave"
sSalida  = "c:backupsmysql"
sFecha   = Date - 1
sAno     = DatePart("yyyy", sFecha)
sMes     = DatePart("m", sFecha)
sDia     = DatePart("d", sFecha)

If (Len(sMes) = 1) Then
  sMes = "0" & sMes
End If

If (Len(sDia) = 1) Then
  sDia = "0" & sDia
End If

sFecha = sAno & "-" & sMes & "-" & sDia
sRuta = "c:mysqlbin"

Dim sh 'As WScript.Shell
Set sh = WScript.CreateObject("WScript.Shell")

sh.Run "cmd /C """ & sRuta & _
  "mysqldump.exe"" " & _
  "--add-drop-table " & _
  "--lock-tables " & _
  "--databases " & _
  "--user=" & sUsuario & " " & _
  "--password=" & sClave & " " & _
  sBD & " >" & _
  sSalida & sFecha & "_" & sBD & ".sql"


</job>
Anuncios