If you do want to create it from scratch, I'd start off keeping it as simple possible. For example, leave out administrative tasks until later and stick with presets. Creating a forum is probably more work than you'd think. On the other hand, you would learn a lot of different things from it.
For example, categories need somewhere to come from. You may put them in the php code as constants. Or you could put them in a separate table in the database. When your entire forum is in place and you start dealing with administrative tasks, you could go about handling new additions of categories. At that point, the best choice is to have them in the database. But it would still be easy to move them from a php config file as constants into a new table at that point. If it isn't easy to make such a change, you have probably made a bad design decision previously. And that is also a good thing. Because that way you will hopefully learn how not to do certain things, leading to better decisions in the future.
You already have a bunch of tasks (send PM, create a thread, create a post etc). The easiest approach if you have not used databases before might be to start thinking about how a user would want to do those things and create the user interface for each of the tasks. At the moment, do not worry about how the data will be stored. You may even use dummy data to see what a post looks like, or what several posts in a thread looks like. For example, dummy data for a few posts in a thread may use an array where you give each post a separate element.
When the user interface for a specific task is done, you could move on to the server side handling of POST data. You may for example group functionality and data to handle a member into a Member class, posts into a Post class etc.
After this is done, you will need to design your database schema. If you haven't already read about database normalization you will need to do so now. But you really do not have to think about the database structure until the rest is in place. You may still wish to only deal with user/member from user interface to database until you start with posts. But as long as you start thinking about the user interface first, then add server-side facilities for receiving posted data, and sending (pre-populated dummy) data, you will probably have an easier time knowing what data you need to store in the database.