Unfortunately, Gyarados does not learn Hydro Cannon. Only water type starters can learn them:
Any Gyarados that uses Hydro Cannon is likely a hacked one. Gyarados does however learn the move, Hydro Pump. However, Hydro Pump is a special based attack. Gyarados's special attack longs in comparison with it's Physical attack power. This means you need a different Physical move if you wish to use one.
As mentioned, Waterfall is a powerful attack that can be used to decimate enemies. Aqua tail provides a higher power than waterfall, but has lower accuracy. Dive is both Powerful and accurate. But it does take a turn to charge. That means enemies can switch before it hits. so it is a matter of preference.