While installing and configuring MySQL server (version 5) on my home PC (Windows), I ran into many small and annoying problems and gained some useful insights. This post shall be a protection from repeating these mistakes in the future.

First of all, I downloaded the Windows auto-installer from MySQL's website and ran through the installation. The server executable suitable for Windows XP machines is mysqld-nt.exe, located in the bin directory of the installation. It is designed to be run as a Windows service (background process). To register it as a service from the command line, run:

mysqld-nt --install

This installs MySQL server as a service that will run every time Windows starts. If you don't want that to happen, then open the Services configuration tool (Control Panel -> Administrative Tools -> Services), find the MySQL service and modify its Startup properties. This Services tool can then be used to manually start and stop the service when needed. In any case, it is also possible to start and stop the service quickly from the command line:

net start mysql
net stop mysql

More details about post-installation configuration (like setting the root password) can be found in the MySQL docs. Here I'll focus on the specific problem I ran to.

Once the server is up and running, it is easy to access it from the command line, by calling:

mysql -u root -p

And entering the password. This command connects to 'localhost' by default, which is what we need. However, creating and viewing databases via a command-line tool isn't too convenient, so I was looking for a GUI to do that, and found MySQL Administrator, which is part of MySQL GUI Tools, downloadable from the MySQL website. However, after installing the tool I had a problem connecting to the server - I kept getting the following error:

ERROR 2003: Can't connect to MySQL server (10061)

This was very annoying since I was able to connect via the command line, so why not with a GUI ? What made the problem stranger is that I could use the GUI to connect to online databases which were not on my PC. I googled a lot, did some research, used nmap and mysqladmin to investigate how the server runs and which ports it listens to. To cut a long story short:

By default (at least in my installation), MySQL server is configured not to use a TCP/IP connection but rather a local named pipe (which is called 'mysql', BTW). The command line mysql tool is aware of that and connects to the server without any problems. However, to use MySQL Administrator, one has to specify the exact connection details.

You can ask MySQL Administrator to use the named pipe to connect (via Details in the connection dialog), but I wanted to set up my server to listen to TCP (on MySQL's default port - 3306). To do that, it is possible to modify settings in the my.ini configuration file. I'm sure the MySQL docs explain all about that, though the file can get pretty complex.

Fortunately, on Windows at least, there's a simpler way. MySQL comes with a tool named MySQLInstanceConfig, which can be found in the bin directory and in the folder MySQL creates in the Start menu. Using MySQLInstanceConfig, it is possible to configure the MySQL server in a friendly manner. I asked it to listen to port 3306 instead of a named pipe, and MySQL Administrator connected successfully, allowing me to add and edit tables in my DB easily.

Notes:
  • If MySQL Administrator complains about setup of "InnoDB", this is tweakable in the MySQLInstanceConfig tool.
  • mysqladmin version is a useful command to execute to see some information about the currently running MySQL server, including the port it listens to.