We study the dynamics of a cavitation bubble near beds of sand of different grain sizes. We use high-speed imaging to observe the motion of the bubble and the sand for different values of the stand-off parameter $\gamma$ (dimensionless bubble-boundary distance) between 0.3 and 5.3. Compared with a rigid boundary, we find that a granular boundary leads to bubbles with shorter lifetimes and reduced centroid displacements. Above $\gamma \approx 1.3$, the behaviour of the bubble is almost independent of the granularity of the sand. When the stand-off parameter lies between $0.6$ and $1.3$, a mound of sand develops beneath the bubble, which can force the latter to assume a conical shape as it collapses. For $\gamma \lesssim 0.6$, the bubble develops a bell-shaped form, leading to the formation of thin and surprisingly fast micro-jets ($v_{jet} > 1000\,{\rm m}\,{\rm s}^{-1}$). Moreover, between $\gamma \approx 1.3$ and $\gamma \approx 0.3$, granular jets erupt from the sand surface following the bubble collapse. We additionally develop a simple numerical model, based on the boundary integral method, to predict the dynamics of a cavitation bubble near a bed of sand, which we replace by an equivalent liquid. The simulations are remarkably consistent with experimental observations for values of $\gamma$ down to $1.3$. We also show how the anisotropy parameter $\zeta$, a dimensionless version of the Kelvin impulse, can be adapted for the case of a nearby bed of sand and predict the displacement of the bubble centroid for $\zeta \lesssim 0.08$.