mostrar los inicios de sesión en el servidor (tenga en cuenta que %
significa anyhost o comodín)
select user,host from mysql.user;
+-----------+------------+
| user | host |
+-----------+------------+
| ajax_guy | % |
| joe7 | % |
| joe8 | % |
+-----------+------------+
mostrar qué subvenciones existen para un determinado usuario.
show grants for 'ajax_guy'@'%';
+----------------------------------------------------------------------
| Grants for [email protected]%
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------
Cómo otorgar acceso a una base de datos determinada a un inicio de sesión determinado. A continuación, otorgamos todos los derechos al usuario para el so_gibberish
base de datos .
grant ALL on so_gibberish.* to 'ajax_guy'@'%';
Mire las subvenciones vigentes ahora para ese inicio de sesión
+----------------------------------------------------------------------
| Grants for [email protected]%
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `so_gibberish`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------
Crear un nuevo inicio de sesión drew_saturday
con una contraseña friday987
.Él tiene todos los privilegios en base de datos so_gibberish
y puede iniciar sesión desde cualquier host (%
)
grant ALL on so_gibberish.* to 'drew_saturday'@'%' IDENTIFIED BY 'friday987';
select user,host,password from mysql.user where user='drew_saturday';
+---------------+------+-------------------------------------------+
| user | host | password |
+---------------+------+-------------------------------------------+
| drew_saturday | % | *4600ED0F377308959665877BD327D4788DC2071F |
+---------------+------+-------------------------------------------+
Esa contraseña de arriba es la contraseña cifrada por cierto.
Nota:para MySQL 5.7, el comando anterior sería:
select user,host,authentication_string from mysql.user where user='drew_saturday';
Página del manual de Mysql en Grant
. No otorgue derechos excesivos a los usuarios que usan grant ALL on *. ...
. Eso sería para todos base de datos en el sistema. Simplemente lea el manual y menos es más.
A veces, los administradores desean otorgar acceso a solo un puñado de tablas en una base de datos (no a todas las tablas) a un inicio de sesión. El manual es una lectura obligada sobre esto.
Y una última cosa. 'drew_saturday'@'%' es un inicio de sesión diferente a 'drew_saturday'@'NOT-local' (tomado de su título). Son inicios de sesión diferentes con derechos diferentes. Ese es el punto de lo primero que escribí allá arriba.