Lots of misunderstanding here; let's see if I can clarify.
A socket file is not a regular file, it's more like an IP address (it is also not a fifo, although those are similar). A socket file is created by the system when a program calls bind on a unix domain socket, which is a special kind of network socket that can only be internal to one computer. The system then associates this special file with the socket file descriptor that the program bound (or more specifically, the "inode" to which that file descriptor refers).
From that point on, the program that created the socket has no interaction with the socket by the filename. If you move it elsewhere, create new links to it, or remove it, you may confuse other programs that are trying to talk to the program in question, but the program itself won't see it at all. You are only changing the set of names that point at that inode (and you can connect to the listening program at that new name!). Thinking of the filename as a domain name, the inode as the ip address, and the filesystem as DNS isn't so very far off.
So considering, in this case, mysqld and it's socket. As should be apparent (I hope) from the above, copying a socket file created by some other program to /var/run/mysql.sock isn't going to help re-establish communication with the mysql server - you've just pointed the filename you want at a different inode, and it will mean that other program (if it is still alive) will be receiving the connections that should be going to mysqld; not what we want at all. What is needed is for mysqld itself to recreate the socket.
So, how can we make it do that? Per
http://www.pathname.com/fhs/pub/fhs-2.3.html, the /var/run filesystem is the place for run-time variable data and should be cleared out at each boot. So a restart of the computer should do it. But that's ugly. We should be able to just restart the service (it would be even nicer if a reload would do it, but I've tested and it doesn't). So ideally, the init scripts should handle this and on the version of ubuntu I'm in front of they do. Here,
sudo service mysql restart
works just fine after removing /var/run/mysql.sock, and the file is recreated. If that doesn't work, you can try running the init scripts manually with something like
sudo /etc/init.d/mysqld restart
If that still doesn't work, then you need to bring it down some other way. Per
http://dev.mysql.com/doc/refman/5.0/...-response.html we see that a TERM signal will safely shut down the server, so we can say
ps -A | grep mysqld
to get the pid of the running server (as mysqld is not so well behaved as to provide us with a pid file, but no biggie), and then (replacing 12345 with the pid we found):
sudo kill -TERM 12345
So now mysqld should have shut itself down, and you can bring it back up the same way you started it in the first place. If the socket file still doesn't exist at that point, the server is probably failing to come up and you should check your log files (probably at /var/log/mysql/error.log) for reasons why.