Capítulo 6: Seguridad
Enlaces
- Todos los permisos que se pueden asignar a un usuario en MySQL.
- Servicios editoriales para la documentación libre en español.
- Webmin.
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>;