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

1045, Acceso denegado para el usuario 'nombre de usuario'@'NO-local' (con contraseña:SÍ)

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.