si el usuario está en session está en DB, si no es así, algo raro pasa...
si hay otras formas... directamente con $_COOKIES creas un identificador y lo almacenas en una tabla junto con los datos que quieras almacenar, cada vez que se cargue la pagina lees $_COOKIES y si tiene el identificador, lees la DB, si exíste, cargas su rol... para esto no son utiles las tablas comunes debido a la lentitud, en este caso tienes que crear una tabla que corra en ram (memory tables)
https://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html
un nivel de seguridad mas, es que cada vez que lees la $_COOKIE, la recalculas y mandas el nuevo identificador, así si llegaran a robar el ID solo será valido antes que esa persona cargue de nuevo la pagina... eso si, si recalculas con un motor predecible, será peor el remedio que la enfermedad