sql >> Base de Datos >  >> RDS >> Mysql

Cómo otorgar todos los privilegios en una base de datos en MySQL

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 los PRIVILEGES de tipo ALL (así todo, por supuesto). Nota:la mayoría de las instalaciones modernas de MySQL no requieren los PRIVILEGES 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 ese username 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)