El proyecto Spring-mvc no puede seleccionar de una tabla mysql en particular

El proyecto Spring-mvc no puede seleccionar de una tabla mysql en particular

Estoy creando un proyecto Spring-mvc (usando JPA e Hibernate para acceder a la base de datos) que se ejecuta muy bien localmente, en mi equipo de desarrollo, con una base de datos MySQL local.

Ahora estoy intentando colocar una instantánea en un servidor provisional para que mi cliente juegue con ella y tengo problemas.

Tomcat (después de un poco de lucha) implementa mi archivo war sin quejarme y puedo obtener alguna respuesta de la aplicación a través del navegador.

Cuando llego a mi página principal, que está detrás de la autenticación de Spring Security, me redirige a la página de inicio de sesión, que funciona perfectamente. Tengo Seguridad configurada para consultar la base de datos para obtener detalles del usuario, y eso funciona bien. De hecho, un cambio en una contraseña en la base de datos se refleja en el comportamiento del formulario de inicio de sesión, por lo que estoy seguro de que ESTÁ llegando a la base de datos y consultando la usertabla.

Una vez autenticados, vamos a la primera página "real" de la aplicación y aparece un error de "error de acceso a datos". El registro de la consola del servidor obtiene esta línea (redactada):

ERROR org.hibernate.util.JDBCExceptionReporter - SELECT command denied to user
'myDbUser'@'localhost' for table 'asset'

Sin embargo, si voy a MySQL desde el shell usando exactamente los mismos créditos, no tengo ningún problema en seleccionar de la assettabla:

[development@tomcat01stg]$ mysql -u myDbUser  -pmyDbPwd dbName

...

mysql> \s
--------------
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1

Connection id:      199
Current database:   dbName
Current user:       myDbUser@localhost
...
UNIX socket:        /var/lib/mysql/mysql.sock
--------------

mysql> select count(*) from asset;
+----------+
| count(*) |
+----------+
|       19 | 
+----------+
1 row in set (0.00 sec)

Desglosé mi configuración de acceso a MySQL, limpié al usuario y volví a ejecutar los comandos de concesión, configuré una versión del usuario desde 'localhost' y otra desde '%', asegurándome de eliminar los permisos... Nada está cambiando el comportamiento de esta cosa.

¿Lo que da?

Respuesta1

Lo averigué.

Resulta que la configuración de la base de datos que ingresaste en /src/main/resources/spring/database.properties se usa para la conexión de la base de datos, pero el esquema que le das a Roo cuando hace su "ingeniería inversa de la base de datos" se completa en todos los archivos creados por Roo. clases de modelo, y eso se usa para especificar la tabla (schema.table) en las consultas.

El nombre de la base de datos del servidor provisional es diferente al de mi casilla local. Entonces, los nombres de las tablas que estaba usando, completados con el nombre del esquema de mi base de datos local, eran incorrectos. MySQL da un aburrido mensaje de error acerca de no tener permiso para SELECCIONAR, cuando eso sucede, pero lo que realmente está sucediendo es una discrepancia en el nombre del esquema.

Lo más rápido que pude hacer fue recrear mi base de datos en el servidor provisional con un nombre que coincidiera con el de mi cuadro de desarrollo. Eso resolvió esto.

información relacionada