Lo principal es ver cómo funciona.
Debes obtener el máximo de resultados de mysql, ej: 50 filas y lo divides entre el número de filas que mostrarás por página, así obtendrás el número de paginas que tendrás.
Ejemplo: 50 filas (artículos, usuarios, lo que sean esas filas), entre 10 filas que se mostrarán por página, da un resultado de 5 paginas.
puedes usar $_GET para cambiar la página, como sitioweb.com/?pagina=1
Entonces, sería la página 1, lo demás es usar mysql para limitar las filas a mostrar, usando limit.
Insertar CODE, HTML o PHP:
SELECT * FROM `base_datos` ORDER BY tabla.id DESC LIMIT 1,10
1 es el número de página, y 10 el total de filas a mostrar por página.
Lo único que debes hacer es que usar $_GET como variable, y agregarla a limit de mysql, para cambiar la página desde la url, después calcular el total de paginas que habrá (como dije antes) y hacer un loop para crear la paginación
Insertar CODE, HTML o PHP:
$total_paginas = 10; //ejemplo
for($n=1;$n<=$total_paginas;$n++) {
echo "<a href=''>$n</a>";
}
Algo así es la idea, aún faltarían varias cosas, como por ejemplo, permitir sólo números en la url (para prevenir una inyección sql) y así mismo, impedir que usen un número que supere al limite de paginas, digamos que si el total de paginas es de 10, y alguien desde la url ingresa 11, dará error; te recomiendo buscar scripts (sencillos) ya hechos, probarlos y ver cómo funcionan.