You are overloading the Arduinos voltage regulator.
The Arduino uses a linear voltage regulator, which dissipates the excess voltages as heat.The higher the provided voltage, the lesser current you can draw from it (since it can only handle a specific power dissipation without a heatsink and power is voltage * current). If you have a genuine Arduino, the voltage regulator will go into thermal emergency shutdown, if you completely overload it. Most Arduino clones use a cheaper regulator, which will just burn out and possibly destroy the Arduino.
So if you require quite an amount of current (like the MQ-9 due to its heating element), you should buy an extra voltage regulator, in best case a switching "buck" regulator (since they are way more efficient than linear regulators). For example there are many rather cheap boards with a switching regulator, which take 12V and output a variable voltage controlled via a small potentiometer (which you can trim for 5V output).
the USB port only works for uploading sketches, it doesn't even power the arduino when nothing is connected.
Then most likely you have already overloaded the diode, that is in the USB power path (for protecting the PCs USB port and helping with supply voltage selection). If the diode were fried and failed open, then the connection from USB positive power to 5V rail on the Arduino is no longer there. A genuine Arduino Uno should also have a polyfuse in the USB line, which can save you from drawing too much current. It should connect again, after you removed the devices, that draw too much power.