localhost
no coincide con %
en MySQL. Parece que debería, pero en realidad no es así. Tendría que otorgar privilegios por separado a [email protected]
, tanto para el USAGE
privilegio, y para los privilegios en cada base de datos.
O puede conectarse como [email protected]
que hace coincide con %
. Parece que usar la dirección IP para localhost debería funcionar de manera idéntica a localhost, pero no es así. Debe tener dos líneas en mysql.user
(y también en la tabla mysql.db
table en su caso) para habilitar ambos.
Para demostrar la diferencia entre localhost y 127.0.0.1:
Conectando como mysql -h localhost
utiliza la interfaz de socket de UNIX y omite TCP/IP. Esto puede ser un poco mejor para el rendimiento, pero tiene el efecto sobre la correspondencia de subvenciones descrito anteriormente.
Puede forzar una conexión TCP/IP local conectándose como mysql -h 127.0.0.1
. Luego recogerá las concesiones que haya hecho a [email protected]%
.
Entonces, para obtener el mismo usuario, contraseña y privilegios tanto para la interfaz de socket como para la interfaz TCP/IP, debe ejecutar all de las siguientes declaraciones:
GRANT USAGE ON *.* TO 'myuser'@'%' IDENTIFIED BY PASSWORD '*7733323232...'
GRANT USAGE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY PASSWORD '*7733323232...'
GRANT ALL PRIVILEGES ON `db1`.* TO 'myuser'@'%'
GRANT ALL PRIVILEGES ON `db1`.* TO 'myuser'@'localhost'
GRANT ALL PRIVILEGES ON `db2`.* TO 'myuser'@'%'
GRANT ALL PRIVILEGES ON `db2`.* TO 'myuser'@'localhost'