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:
GRANTlosPRIVILEGESde tipoALL(así todo, por supuesto). Nota:la mayoría de las instalaciones modernas de MySQL no requieren losPRIVILEGESopcionales palabra clave.- Estos privilegios son para
database_namey se aplica a todos tablas de esa base de datos, que se indica mediante el.*que sigue. - Estos privilegios se asignan a
usernamecuando eseusernameestá 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)