Bug #30421 mysqld fails to start when using bind-address=hostname on Solaris
Submitted: 14 Aug 2007 20:18 Modified: 3 Dec 2007 18:22
Reporter: Matthew Montgomery Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version: OS:Solaris (SunOS 5.10 Generic_118844-20)
Assigned to: CPU Architecture:Any
Tags: bind-address, cluster

[14 Aug 2007 20:18] Matthew Montgomery
Description:
The mysqld and ndbd accept differing types of values. 

In mysqld  the --bind-address= option accepts an IP only.
In ndbd the --bind-address= option accepts an IP or hostname

The ndbd documentation is a bit ambiguous in that does not outright state that hostnames are allowed.

"Causes ndbd to bind to a specific network interface. This option has no default value."

http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-ndbd-command-options.html

For mysqld documentation is sparse.  There is no example configuration for this option, or explaination that multiple instances of this option or multiple IP addresses listed here are not accepted.

Docs simply state "The IP address to bind to."

http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_bind-address

How to repeat:
ndbd --bind-address=localhost (ok)
ndbd --bind-address=127.0.0.1 (ok)

mysqld --bind-address=localhost (error)
mysqld --bind-address=127.0.0.1 (ok)

Suggested fix:
Make --bind-address options behave consistently across all binaries in the mysql distribution.
[15 Aug 2007 20:38] Sveta Smirnova
Thank you for the report.

I can start mysqld with option --bind-address=any_hostname without error:

$./bin/mysqld --bind-address=localhost --basedir=. --datadir=./data --socket=/tmp/mysql_ssmirnova.sock &
[1] 30203

070815 22:32:20  InnoDB: Started; log sequence number 0 437240948
070815 22:32:20 [Note] ./bin/mysqld: ready for connections.
Version: '5.0.36-enterprise-gpl'  socket: '/tmp/mysql_ssmirnova.sock'  port: 3306  MySQL Enterprise Server (GPL)

$bin/mysqladmin -uroot --socket=/tmp/mysql_ssmirnova.sock shutdown
070815 22:32:24 [Note] ./bin/mysqld: Normal shutdown

070815 22:32:24  InnoDB: Starting shutdown...
070815 22:32:26  InnoDB: Shutdown completed; log sequence number 0 437240948
070815 22:32:26 [Note] ./bin/mysqld: Shutdown complete

[1]+  Done                    ./bin/mysqld --bind-address=localhost --basedir=. --datadir=./data --socket=/tmp/mysql_ssmirnova.sock

So I'll reclassfy this report as documentation bug.
[11 Sep 2007 20:53] MySQL Verification Team
I wanted to update this issue to note that there is a real bug here:

-bash-3.00$ grep bind-address ./my.cnf
bind-address=sol10-amd64-c

-bash-3.00$ grep sol10-amd64-c /etc/hosts
10.100.1.43     sol10-amd64-c   # Added by DHCP

-bash-3.00$ host sol10-amd64-c 
sol10-amd64-c.mysql.com has address 10.100.1.43

-bash-3.00$ /sbin/ifconfig bge0 
bge0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
        inet 10.100.1.43 netmask ff000000 broadcast 10.255.255.255

Upon startup I get:
070911 22:34:37 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
070911 22:34:37 [ERROR] Do you already have another mysqld server running on port: 3350 ?
070911 22:34:37 [ERROR] Aborting

-bash-3.00$ netstat -a | grep 3350
-bash-3.00$ 

After setting the bind-address=10.100.1.43 mysqld starts.

This effects mysqld on Solaris but not Linux
[15 Nov 2007 17:15] Paul DuBois
As with most options, if the --bind-address option is given multiple times, the last instance is used. However, I have updated the description to point out explicitly that only one address can be selected with this option.

Regarding IP address vs. hostname, I have no information that hostnames are intended to work. It might happen that they do in some cases, but we are not going to promise that in the documentation.

Re-assigning to Jon for the NDB-related part of this bug report. (Jon: Please check with NDB team whether they want to specify that hostnames are specfically supported, or just IP addresses. Thanks.)
[18 Nov 2007 12:01] Jon Stephens
Changed catgeory to Docs (for now).
[1 Dec 2007 13:43] Jon Stephens
I've updated the docs to indicate that hostnames are supported, since I could not get anyone to confirm to me that they are not.

Naturally, MySQL executables (NDB or otherwise) have no capability on their own for resolving hostnames; this is OS-level functionality.

Setting back to Open/Server so that this now get assign to a dev and fixed for Solaris.
[3 Dec 2007 18:22] Sveta Smirnova
Hostnames are supported at least on Mac. But this bug is really duplicate of bug #28516