Para comenzar a editar privilegios en MySQL, primero debe iniciar sesión en su servidor y luego conectarse a mysql
cliente. Por lo general, querrá conectarse con root
o la cuenta que sea su cuenta principal e inicial de "superusuario" que tenga acceso total durante toda la instalación de MySQL.
Normalmente, la root
Al usuario se le habrá asignado una contraseña de autenticación cuando se instaló MySQL, pero si ese no es el caso, debe tomar medidas para aumentar su seguridad agregando root
contraseñas como se ilustra en la documentación oficial.
Conexión a la herramienta de línea de comandos MySQL
Para este ejemplo, asumiremos root
es la cuenta principal de MySQL. Para comenzar a utilizar la herramienta de línea de comandos de MySQL (mysqlcli
), conéctese a su servidor como root
usuario, luego emita el mysql
comando:
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
Si tiene éxito, verá algunos resultados sobre su conexión MySQL y estará mirando hacia abajo el mysql
aviso.
Nota:en caso de que no pueda conectarse directamente al servidor como root
usuario antes de conectarse a mysql
, puede especificar el usuario que desea conectar como agregando --user=
bandera:
$ mysql --user=username
Concesión de privilegios
Ahora que estás en mysqlcli
indicador, solo necesita emitir el GRANT
comando con las opciones necesarias para aplicar los permisos adecuados.
Tipos de privilegios
El GRANT
El comando es capaz de aplicar una amplia variedad de privilegios, desde la capacidad de CREATE
tablas y bases de datos, leer o escribir FILES
, e incluso SHUTDOWN
el servidor. Hay una amplia gama de indicadores y opciones disponibles para el comando, por lo que es posible que desee familiarizarse con lo que GRANT
puede hacerlo navegando a través de la documentación oficial.
Privilegios específicos de la base de datos
En la mayoría de los casos, otorgará privilegios a los usuarios de MySQL en función de la database
particular. esa cuenta debe tener acceso. Es una práctica común, por ejemplo, para cada database
única de MySQL en un servidor para tener su propio user
único asociado con él, de modo que solo un único user
tiene acceso de autenticación a una sola database
y viceversa.
Para GRANT ALL
privilegios a un user
, lo que permite a ese usuario el control total sobre una database
específica , use la siguiente sintaxis:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Con ese comando, le hemos dicho a MySQL que:
GRANT
losPRIVILEGES
de tipoALL
(así todo, por supuesto). Nota:la mayoría de las instalaciones modernas de MySQL no requieren losPRIVILEGES
opcionales palabra clave.- Estos privilegios son para
database_name
y se aplica a todos tablas de esa base de datos, que se indica mediante el.*
que sigue. - Estos privilegios se asignan a
username
cuando eseusername
está conectado localmente, según lo especificado por@'localhost'
. Para especificar cualquier host válido, reemplace'localhost'
con'%'
.
En lugar de otorgar todos los privilegios a toda la base de datos, tal vez desee otorgar el tolkien
usuario solo la capacidad de leer datos (SELECT
) de los authors
tabla de los books
base de datos. Eso se lograría fácilmente así:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Creando otro superusuario
Si bien no es particularmente seguro, en algunos casos es posible que desee crear otro "superusuario", que tenga TODOS los privilegios en TODAS las bases de datos en el servidor. Eso se puede realizar de manera similar a la anterior, pero reemplazando el database_name
con el asterisco comodín:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Ahora tolkien
tiene los mismos privilegios que el root
predeterminado cuenta, ¡cuidado!
Guardar tus cambios
Como paso final después de cualquier actualización de los privilegios de usuario, asegúrese de guardar los cambios emitiendo FLUSH PRIVILEGES
comando desde mysql
aviso:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)