MySQL 5.0 introduce una serie de cambios en la estructura de las
tablas de permisos (las tablas en la base de datos
mysql
) a fin de agregar nuevos privilegios y
características. Las tablas de permisos también deben
actualizrse cuando se efectúa la actualización a MySQL 5.0. En
primer lugar debe hacerse una copia de respaldo de la base de
datos mysql
, y luego emplear el siguiente
procedimiento.
En Unix o sistemas similares, se deben actualizar las tablas de permisos mediante la ejecución del script mysql_fix_privilege_tables:
shell> mysql_fix_privilege_tables
Se debe ejecutar este script mientras el servidor está en
ejecución. Intenta conectarse como root
al
servidor en localhost. Si la cuenta root
requiere una contraseña, la misma debe indicarse en la línea
de comandos. Para MySQL 5.0 la contraseña se indica de este
modo:
shell> mysql_fix_privilege_tables --password=root_password
El script mysql_fix_privilege_tables ejecuta
todas las acciones necesarias para convertir las tablas de
permisos hacia el formato 5.0. Durante su ejecución podrían
verse algunas alertas del tipo Duplicate column
name
, pero deben ignorarse.
Después de ejecutar el script, el servidor debe ser detenido y reiniciado.
MySQL 5.0 para Windows incluye un script SQL llamado
mysql_fix_privilege_tables.sql
que puede
ejecutarse empleando el cliente mysql. Si la
instalación de MySQL está ubicada en C:\Program
Files\MySQL\MySQL Server 5.0
, el comando se vería
así:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql -u root -p mysql mysql> SOURCE C:/Program Files/MySQL/MySQL Server 5.0/scripts/mysql_fix_privilege_tables.sql
Si la instalación se localizara en cualquier otro directorio, habrá que ajustar la ruta apropiadamente.
El comando mysql solicitará la contraseña
para el usuario root
; hay que ingresarla.
Al igual que en el procedimiento para Unix, se podrían observar
algunas alertas Duplicate column name
a
medida que mysql procesa las sentencias en el
script mysql_fix_privilege_tables.sql
, pero
pueden ignorarse.
Luego de ejecutar el script, hay que detener y reiniciar el servidor.
Si se está actualizando a MySQL 5.0.1 o posterior, el
procedimiento de actualización de las tablas de permisos que se
acaba de describir agrega columnas relacionadas con las vistas,
para los privilegios CREATE VIEW
y
SHOW VIEW
. Estos privilegios existen a nivel
global y a nivel de base de datos. Sus valores iniciales se
establecen de esta forma:
En MySQL 5.0.2 o posterior,
mysql_fix_privilege_tables copia el valor
de Create_priv
de la tabla
user
dentro de las columnas
Create_view_priv
y
Show_view_priv
.
En 5.0.1, los permisos relacionados con vistas no están
habilitados para ninguna cuenta, por lo que no se puede
utilizar GRANT
para otorgar estos
permisos a las cuentas que deban tenerlos. Para solventar
esto, hay que conectarse al servidor como
root
y utilizar las siguientes sentencias
para otorgarle estos privilegios a las cuentas
root
en forma manual, a través de
UPDATE
:
mysql> UPDATE mysql.user SET Show_view_priv = 'Y', Create_view_priv = 'Y' -> WHERE User = 'root'; mysql> FLUSH PRIVILEGES;
Luego de esto, root
se podrá usar
GRANT
para otorgar privilegios de vistas
a otras cuentas. Nota: Se deben emplear las sentencias tal
como se indican; GRANT ALL
no tiene
efecto en los niveles global y de base de datos, porque
GRANT
requiere que realmente se posean
los privilegios que se otorgan.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.