I have added a calendar in my publishing site. Problem is this is a shared calendar which means all users can view each other's events that they have added.
How can I add a personal calendar?
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It only takes a minute to sign up.Sign up to join this community
A calendar is essentially just a SharePoint list so you can manage permissions on it in just the same way you manage any other list.
Go to List Settings -> Advanced Settings. The second section down is entitled Item-Level Permissions and allows you to restrict both read and edit to the user who created the item.
The comment from ErinsMatthew is correct - though in this case, unless you have 50,000 users you are unlikely to have issues. From experience, calendars also tend to have a limited number of entries so I would be surprised if you hit performance issues.
Note that any users with Manage Lists permissions will see all items in the calendar, so if you want to use a common view then I would recommend you use a filter such as Created By = [Me].
If you are using a shared calendar, you will have to live with this as a side effect unless you want to establish item-level permissions on each calendar entry. I would NOT recommend this due to the potential performance impact of fine-grained permissions.
My recommended solution would be to implement My Sites on your SharePoint server. This will allow every person with a login to SharePoint to have their own site, which can host a calendar, document library, or whatever. If you need a consolidated rollup, you can use workflow to copy the items to a global calendar, or even create a view using a Data View Web Part (though that's more of a SharePoint 2010 way of doing it).
You could add a new calendar for each user if you only have a handfull to deal with, but this can become unmanageable over time.