Should I separate this table into two: relationship between role and permission, and another one for relationship between user_id and the role?
Then, if a new permission is added, I will add it to the permission table for all the roles that can use it.
If you need both roles and permissions, this is the way to go. Consider caching a user's permission to make your system faster.
Mind that usually, in most system related jargon, a role is somewhat related to what "job title" a user has, such as a manager, analyst, admin, etc.
And permissions are usually related to an action a system can perform: create a user, delete an item, etc.
So in most RBAC (Role-Based Access Control) systems, there is usually this two pivots: a role_user, and a permission_role. Some such systems also allow a user_permission so you can grant any additional permission to a particular user without needing to create a whole new role just for them.
I used to use this RBAC approach on most of my projects. Nowadays I prefer to have a finite set of roles, that is not user modifiable, and make use of model policies to define fine-grained permissions. It is a lot less-flexible than allowing dynamic role creation and permission assignment.
At the end of the day I realized most clients usually settle down on a well-defined set of roles and permissions, so you can make small changes to your code until this set matures with your client, and after that both maintenance and support are much easier as you won't need to assess every particular role/permission combination to understand an issue your client might be having.
But of course, sometimes a flexible RBAC is a project's requirement. Choose at your project's own needs.
Good luck =)