No, it's a good idea to force users to have different types of characters in their passwords. That's exactly because of this kind of thing. The way to break hashed passwords is to use a precomputed rainbow table. That's typically a list of all possible passwords of a certain length range with the matching hashes. If you have that, cracking is easy, just a quick lookup.
Now, the problem with rainbow tables is that they are pretty big (starting with hundreds of GB's). That's big, but not that big these days. If users limit themselves to lower case alfa characters you have a pretty manageable diamond table. But if you have to account for punctuation marks, numbers and upper case characters their size explodes.
But thats still not good enough. Anyone worth their salt uses a salt. A random string of characters that you store with the password that's used to seed the hash with. A long enough salt makes using rainbow tables impossible because the space required to store them would be humongous. In an application of mine I have also added a system wide salt that is not stored in the database. If anyone gets their hands on the database data, but not the code, they'll have an extra problem to figure out.
So you're back to brute forcing, which is going to take you a very long time with 6 million passwords.
Unfortunately for the LinkedIn people, someone forgot their salt, so the passwords can be cracked fairly easily if someone has the required rainbow table.