This is something that had eluded me in the past so I wanted to write a very quickly documentation on the subject.
(In the past, I always thought the issue was purely firewall related.)
For MySQL running on an Ubuntu 14 server, the change is extremely simple to allow for incoming DB connections.
Simply edit the config file by doing:
sudo nano /etc/mysql/my.cnf
Then, comment out the bind-address = 127.0.0.1
(It will default to bind-address = 0.0.0.0 which means bind to all basically.)
Once this has been done, restart the MySQL server by running:
sudo /etc/init.d/mysql restart
According to the internets, the only options for binding an IP address with MySQL are all or just a single IP.
If you wish to allow only a certain range of IP-Addresses such as 10.x.x.1/255.255.252.0 then you’ll need to use the firewall to block those out.
Official Documentation: https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_bind-address
Random Internets Source confirming single or all: http://www.cyberciti.biz/faq/unix-linux-mysqld-server-bind-to-more-than-one-ip-address/
I wrote a guide (here) I quickly wrote to enable Ubuntu Firewall and allow for multiple addresses to access port 3306.